/ / BooleanField Standardwert nicht festgelegt beim Erstellen einer Modellinstanz - django, django-models, django-admin

Der BooleanField-Standardwert wurde beim Erstellen einer Modellinstanz nicht festgelegt - django, django-models, django-admin

Beim Erstellen einer Instanz eines Modells mit a BooleanField my_boolean_field mit einem default einstellen TrueIch erhalte einen Fehler:

my_boolean_field is required

Sollte es nicht auf den Standardwert eingestellt werden?

models.py

class MyModel(User):

my_boolean_field = models.BooleanField(default=False)

admin.py

class MyModelCreationForm(UserCreationForm):

my_boolean_field = forms.BooleanField(initial=False)

class Meta:
model = User

class MyModelChangeForm(UserChangeForm):

my_boolean_field = forms.BooleanField(initial=False)

class Meta:
model = User


class MyModelAdmin(UserAdmin):

form = MyModelChangeForm
add_form = MyModelCreationForm

list_filter = ()
list_display = ("username", "my_boolean_field")

fieldsets = (
(None, {"fields": ("username", "my_boolean_field", "password" )}),
)


add_fieldsets = (
(None, {
"classes": ("wide",),
"fields": ("username", "my_boolean_field", "password1", "password2")}
),
)

def get_form(self, request, obj=None, **kwargs):
form = super(MyModelAdmin, self).get_form(request, obj, **kwargs)
if obj==None:
form.base_fields["username"].widget.attrs["autocomplete"] = "off"
form.base_fields["password1"].widget.attrs["autocomplete"] = "off"
form.base_fields["password2"].widget.attrs["autocomplete"] = "off"
return form

samsic_site.register(MyModel, MyModelAdmin)

Antworten:

3 für die Antwort № 1

Ändern Sie die Felddefinition in Ihrer Modellform, um anzugeben require=False.

class MyModelCreationForm(UserCreationForm):

my_boolean_field = forms.BooleanField(initial=False, required=False)

class Meta:
model = User

Hinweis zu BooleanField Referenz

Hinweis Da alle Field-Unterklassen habenerforderlich = Standardmäßig ist die Validierungsbedingung wichtig. Wenn Sie einen Booleschen Wert in Ihr Formular einfügen möchten, der entweder True oder False sein kann (z. B. ein Kontrollkästchen aktiviert oder deaktiviert), müssen Sie beim Erstellen des BooleanFields unbedingt erforderlich = False übergeben.