/ / BooleanField не е зададена по подразбиране при създаването на модел - django, django-models, django-admin

Стойността по подразбиране на BooleanField не е зададена при създаването на модел - django, django-models, django-admin

Когато създавате модел на модел с a BooleanField my_boolean_field с default настроен на True, Получавам грешка:

my_boolean_field is required

Не трябва ли да бъде зададена стойността по подразбиране?

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)

Отговори:

3 за отговор № 1

Променете дефиницията на полето във формуляра на модела си, за да определите require=False.

class MyModelCreationForm(UserCreationForm):

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

class Meta:
model = User

Забележка за BooleanField препратка

Забележка Тъй като всички подкласове на полета саrequired = Вярно е по подразбиране, валидността тук е важна. Ако искате да включите булев във формуляра си, което може да е истина или невярно (например квадратче с отметка или отметка), трябва да запомните да въведете задължително = False при създаването на BooleanField.