0

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

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

我想是因为我将这两个字段设置为空白=真。不知道在这里使用 clean() 是否正确以及从中返回什么。

{{form.non_field_errors}} 中没有显示任何内容

谢谢

4

1 回答 1

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
于 2012-11-03T11:21:02.593 回答