/ / 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)

回答:

回答№1の場合は3

指定するモデルフォームのフィールド定義を変更する require=False.

class MyModelCreationForm(UserCreationForm):

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

class Meta:
model = User

メモ BooleanField 参照

注意 すべてのFieldサブクラスはrequired =デフォルトではtrue、ここでの検証条件は重要です。フォームにTrueまたはFalse(チェックボックスまたはチェックボックスなし)のブール値を含める場合は、BooleanFieldを作成するときにrequired = Falseを渡す必要があります。