2011-05-10 50 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