2011-05-10 73 views
10

我有一个简单的Django代码。ModelForm is_valid()在单元测试期间总是返回false

有我在models.py文件模型和形式:

from django.db import models 
from django.forms import ModelForm 

class Supplier(models.Model): 
    name = models.CharField(max_length=55) 
    comment = models.TextField(blank=True) 

class SupplierForm(ModelForm): 
    class Meta: 
     model = Supplier 

,并有我的test.py

from django.test import TestCase 
from mysite.myapp.models import Supplier, SupplierForm 

class SupplierTest(TestCase): 
    def test_supplier(self): 
     supplier = Supplier(name="SomeSupplier") 
     supplier_form = SupplierForm(instance = supplier) 
     self.assertEquals(supplier_form.is_valid(), True) 

当我通过manage.py开始测试,is_valid()总是返回False,但我认为是True。

什么原因失败is_valid()在这种情况下? 我使用Django 1.3。

+1

并打印“supplier_form.errors”? – programmersbook 2011-05-10 14:00:20

+0

是的。没有数据 – 2011-05-10 14:05:05

回答

21

没有数据构建的所有形式是“无效的”,因为他们没有什么验证:-)你需要提供有效的输入到表格的constuctor:

supplier_form = SupplierForm({'name': 'NewSupplier'}, instance=supplier) 
+0

谢谢,这是我需要的。附:我刚刚发现了另一个问题与相同的问题在stackoverflow:http://stackoverflow.com/questions/3869791/django-modelform-fails-validation-with-no-errors – 2011-05-10 14:21:14