Как отобразить флажки ManyToManyField в качестве флажков?

Я думаю для сложных типов данных, необходимо расширить их путем определения ToDB () метод, который содержит их собственную реализацию для того, чтобы составить таблицы в DB и этот способ, которым это становится авторекурсивным.

31
задан Vebjorn Ljosa 5 November 2011 в 13:28
поделиться

2 ответа

class GameForm(forms.ModelForm): 
        name = forms.CharField(max_length=15, label='Name') 
        url = forms.URLField(label='URL', initial='http://') 
        cats = forms.ModelMultipleChoiceField(
            widget=forms.CheckboxSelectMultiple,
            required=True)

        class Meta: 
                model = Game 
                fields = ('name','url','cats')

, который должен исправить ваше представление, но я не уверен насчет администратора. все еще ищу ... отредактирую, если что-нибудь найду.

37
ответ дан 27 November 2019 в 21:49
поделиться

Вот как я это решил (Edit: и админка)

Формы:

cats = forms.ModelMultipleChoiceField(widget=forms.CheckboxSelectMultiple, queryset=Category.objects.all())

(Это была часть набора запросов, которую я не смог найти ..)

Просмотр :

cats = form.cleaned_data['cats']
    game.cats = cats

И это весь код, необходимый для сохранения данных.

Редактировать: вот решение для админа

Модели:

from django.contrib import admin
from django.forms import CheckboxSelectMultiple

class MyModelAdmin(admin.ModelAdmin):
    formfield_overrides = {
        models.ManyToManyField: {'widget': CheckboxSelectMultiple},
    }

Админ:

from gamesite.games.models import Game, MyModelAdmin

admin.site.register(Game, MyModelAdmin)

Выглядит немного странно, но работает! Если кто-то найдет способ сделать его более «чистым», напишите нам!

Ура!

39
ответ дан 27 November 2019 в 21:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: