Django - 表单验证

时间:2012-11-03 11:01:29

标签: django django-forms

假设我有一个包含两个字段的类,并且这两个字段都是空白的,但我希望至少填充一个字段。

class MyClass(models.Model):
   url1 = models.URLField(blank=True)
   url2 = models.URLField(blank=True)

   def clean(self):
      if not self.url1 and not self.url2:
      raise forms.ValidationError('message here')
      return self.url1

我认为因为我将两个字段设置为空白= True。 不知道在这里使用clean()是否正确以及从中返回的内容。

{{form.non_field_errors}}

中没有显示任何内容

由于

1 个答案:

答案 0 :(得分:2)

您可以在表单对象上使用clean()方法。目前,您尝试不在Form对象上进行数据验证,而是在数据库模型上进行数据验证。

查看https://docs.djangoproject.com/en/dev/ref/forms/validation/以了解有关表单验证的更多信息。

from django.db import models
from django import forms

class MyClass(models.Model):
   "Your model"
   url1 = models.URLField(blank=True)
   url2 = models.URLField(blank=True)


class MyClassForm(forms.ModelForm):
    "Your form object"
    def clean(self):
       if not self.cleaned_data['url1'] and not self.cleaned_data['url2']:
           raise forms.ValidationError('message here')
       return self.cleaned_data

    class Meta:
        model = MyClass