/ / Значення за замовчуванням BooleanField не встановлено при створенні екземпляра моделі - django, django-models, django-admin

Значення за замовчуванням BooleanField не встановлено при створенні екземпляра моделі - django, django-models, django-admin

При створенні екземпляра моделі з а 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 = True за замовчуванням, стан перевірки тут важливий. Якщо ви хочете включити логічну назву у формі, яка може бути як істинною, так і помилковою (наприклад, прапорець поруч із позначкою або не позначеною), ви повинні пам'ятати, що потрібно ввести обов'язковий = ложний при створенні BooleanField.