我有这样的形式:当一个选项设置为True设置为False(BooleanField)所有其他
forms.py
class OptionForm(forms.Form):
name = forms.CharField(widget=forms.TextInput(attrs={'class' : 'form-control'}), max_length=100, label='Option Name')
default = forms.BooleanField(label='Default', required=False)
因此,我可以补充一点,已经与这两种观点存在一个新的选择或编辑一个
views.py
def new_opt(request):
if request.method=='POST':
fnewopt = OptionForm(request.POST)
if fnewopt.is_valid():
model = OptionModel()
model.name = fnewopt.cleaned_data.get('name')
model.default = fnewopt.cleaned_data.get('default')
model.save()
def edit_opt(request, id_opt):
opt = OptionModel.objects.get(id=id_opt)
if request.method == 'POST':
feditopt = OptionForm(request.POST)
if feditopt.is_valid():
model = opt
model.name = feditopt.cleaned_data.get('name')
model.default = feditopt.cleaned_data.get('default')
modelo.save()
但是我需要当用户选择一个选项为默认不管是新的还是一个已经存在的所有其他选项设置默认为False
现在我解决了它,但使用视图,你知道最好,定制'save()'方法还是在视图中执行? –
@ M.Gar:对于像这样的事情 - 你试图强制执行数据约束 - 你最好把它放在模型中(比如'save()')而不是视图。首先,可以在视图以外的地方创建对象(管理员,shell等)。另一方面,它使测试更容易。 –
谢谢man =) –