Ich habe ein Modell mit Feld:forms.SelectMultiple von models.CommaSeparatedIntegerField
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)
Und ich brauche mehrere Auswahlfelder bekommen (nicht Kontrollkästchen) aus, dass.
Eine Möglichkeit, die ich gefunden, Form von 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)
Aber es für jedes Feld ‚Label‘ und ‚Initiale‘ deklarieren muß neu zu definieren ist, ist, dass für DRY-Prinzip nicht gut. Und ich verstehe nicht, wie kann ich den aktuellen Wert des Objekts für den Anfangswert jedes Feldes setzen?
Und andere Weise, die ich im Handbuch fand, ist formfield-overrides. Ich benutze dev Version von Stamm und ich versuche, diesen Code zu verwenden, aber es hat nicht meine Auswahlfelder ändert in der Administrationsoberfläche zu multiselect:
class MovieAdmin(admin.ModelAdmin):
formfield_overrides = {
models.CommaSeparatedIntegerField: {'widget': forms.SelectMultiple},
}
sein kann jemand wissen, was ist die beste Art und Weise wählen zu definieren mehr Felder? Vielen Dank!
+1 Das ist schön zu wissen –