Luí*_*rme 3 django django-forms
我在Django中有一个模型,它有一个public布尔字段来控制条目是公共的还是私有的.
但是,在表单中,我应该显示一个反向逻辑:private设置的复选框.
class MyModelForm(forms.ModelForm):
private = forms.BooleanField(label="Make this entry private")
class Meta:
model = models.MyModel
Run Code Online (Sandbox Code Playgroud)
我该怎么走?
这是一个自定义表单字段,它接受一个布尔值并翻转它.模型的public字段保持不变,但表单将使用此新字段显示相反的private值.
prepare_value翻转模型的值以在表单上显示相反的值.to_python从提交的表单中获取任何传入值并翻转它以准备保存到模型中.
class OppositeBooleanField(BooleanField):
def prepare_value(self, value):
return not value # toggle the value when loaded from the model
def to_python(self, value):
value = super(OppositeBooleanField, self).to_python(value)
return not value # toggle the incoming value from form submission
class MyModelForm(forms.ModelForm):
public = OppositeBooleanField(label='Make this entry private', required=False)
class Meta:
model = MyModel
Run Code Online (Sandbox Code Playgroud)
[ 更新的答案.上一个答案仅处理保存切换的表单值,而不是在值已存在时正确显示.
| 归档时间: |
|
| 查看次数: |
307 次 |
| 最近记录: |