Pri vytváraní inštancie modelu s BooleanField
my_boolean_field
s default
nastavený na True
, Mám chybu:
my_boolean_field is required
Nemali by byť nastavené na predvolenú hodnotu?
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)
odpovede:
3 pre odpoveď č. 1Zmeňte definíciu poľa vo formulári modelu a špecifikujte require=False
.
class MyModelCreationForm(UserCreationForm):
my_boolean_field = forms.BooleanField(initial=False, required=False)
class Meta:
model = User
Poznámka k BooleanField
referencie
Poznámka Pretože všetky podtriedy poľa majúrequired = True v predvolenom nastavení je podmienka validácie tu dôležitá. Ak chcete do formulára zahrnúť boolean, ktorý môže byť buď pravdivý alebo nepravdivý (napr. Zaškrtnuté alebo nezaškrtnuté políčko), musíte pri vytváraní BooleanField zapamätať povinný = False.