У меня есть модель с полем:
class Movie(models.Model):
genre = models.CommaSeparatedIntegerField(max_length=100, choices=GENRE_CHOICES, blank=True, default=0)
lang = models.CommaSeparatedIntegerField(max_length=100, choices=LANG_CHOICES, blank=True, default=0)
И мне нужно получить несколько полей выбора (не флажки) из этого.
Один из найденных способов - переопределить форму из ModelAdmin
.
class MyMovieAdminForm(forms.ModelForm):
genre = forms.MultipleChoiceField(choices=GENRE_CHOICES)
lang = forms.MultipleChoiceField(choices=LANG_CHOICES)
class MovieAdmin(admin.ModelAdmin):
form = MyMovieAdminForm
admin.site.register(Movie, MovieAdmin)
Но для каждого поля необходимо переопределить 'label' и 'initial', что плохо для принципа DRY. И я не понимаю, как мне установить текущее значение объекта для начального значения каждого поля?
И другой способ, который я нашел в руководстве, это formfield-overrides . Я использую версию dev из trunk и пытаюсь использовать этот код, но он не изменил мои выбранные поля для множественного выбора в интерфейсе администратора:
class MovieAdmin(admin.ModelAdmin):
formfield_overrides = {
models.CommaSeparatedIntegerField: {'widget': forms.SelectMultiple},
}
Может быть, кто-нибудь знает, каков наилучший способ определения нескольких полей выбора? Спасибо!