我有這樣的形式:當一個選項設置爲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 =) –