jul*_*jul 4 django django-models django-admin
当创建具有一个模型的实例BooleanField my_boolean_field与default设置为True,我得到一个错误:
my_boolean_field is required
Run Code Online (Sandbox Code Playgroud)
不应该设置为默认值吗?
模型.py
class MyModel(User):
my_boolean_field = models.BooleanField(default=False)
Run Code Online (Sandbox Code Playgroud)
管理文件
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)
Run Code Online (Sandbox Code Playgroud)
更改模型表单中的字段定义以指定require=False.
class MyModelCreationForm(UserCreationForm):
my_boolean_field = forms.BooleanField(initial=False, required=False)
class Meta:
model = User
Run Code Online (Sandbox Code Playgroud)
参考注意事项BooleanField
注意 由于默认情况下所有 Field 子类都具有 required=True,因此这里的验证条件很重要。如果您想在表单中包含一个可以是 True 或 False 的布尔值(例如选中或未选中的复选框),您必须记住在创建 BooleanField 时传入 required=False。
| 归档时间: |
|
| 查看次数: |
12504 次 |
| 最近记录: |