models.py
class test1(models.Model):
write = models.CharField(max_length=20)
def __str__(self):
return self.write
forms.py
class NameForm(forms.ModelForm):
class Meta():
model = test1
fields = '__all__'
views.py
def get_name(request):
if request.method == 'POST':
form = NameForm(request.POST)
if form.is_valid():
if form.objects.write == 'banana':
form.save(commit=True)
else:
return "Wrong name"
return render(request,'app_one/index.html')
else:
form = NameForm()
return render(request, 'name.html', {'form': form})
我想仅在用户在NameForm的write字段中输入banana时才保存表单。 如果form.objects.write =='banana',我可以使用: form.save(提交= TRUE)
答案 0 :(得分:2)
除了您之前提出的问题之外,这似乎也显示出对于哪些表单以及它们如何工作存在一些困惑。但是,如果要根据字段的值来阻止保存,则根据定义进行验证,并且属于表单本身。所以:
class NameForm(forms.ModelForm):
def clean_write(self):
value = self.cleaned_data['write']
if value != 'banana':
raise forms.ValidationError('wrong value')
return value
class Meta():
model = test1
fields = '__all__'