2012-11-03 143 views
0

假设我有一个有两个字段的类,两个字段都是空白的,但是我想至少填充一个字段。Django - 表单验证

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}}

由于

回答

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 
+0

我得到的对象有没有属性“cleaned_data” –

+0

坑上,只注意到现在你没有使用表单对象,而不是您正在使用一个对象。让我解决它 – andrefsp

+0

这是完美的解决方案,问题是我正在对数据库模型进行表单验证,因为您描述的是这样,这使得我无法跟随文档。它现在很好用。谢谢 –