我从ProductTestCase中得到错误:
...setUp
department = DepartmentForm(department_name_text=self.department_name)
...
...in __init__
super(DepartmentForm, self).__init__(*args, **kwargs)
TypeError: __init__() got an unexpected keyword argument
'department_name_text'
知道如何解决这个问题以及为什么只有在外键上才会出现这个问题会很棒。
我在部门测试中也添加了,它运行正常。
感谢您的时间。
部门测试
class DepartmentTestCase(ModelTestCase):
def setUp(self):
super(DepartmentTestCase, self).setUp()
self.department_form = self.get_department_form(department_name_text=self.department_name)
def test_valid_input(self):
self.assertTrue(self.department_form.is_valid())
产品测试(更新:更改以匹配评论改进)
class ProductTestCase(ModelTestCase):
@classmethod
def setUpTestData(cls):
super(ProductTestCase, cls).setUpTestData()
def setUp(self):
super(ProductTestCase, self).setUp()
self.product_data = {'barcode_text': self.barcode
}
department_inst = Department.objects.create(department_name_text=self.department_name)
maker_inst = Maker.objects.create(maker_name_text=self.maker_name)
self.product_data.update({'name_text': department_inst,
'from_maker': maker_inst})
def test_valid_input(self):
product_form = ProductForm(self.product_data)
self.assertTrue(product_form.is_valid())
部门表格
class DepartmentForm(ModelForm):
field_names = {'department_name_text': 'Department Name'}
class Meta:
model = Department
fields = ['department_name_text']
def __init__(self, *args, **kwargs):
super(DepartmentForm, self).__init__(*args, **kwargs)
for field, name in self.field_names.items():
self.fields[field].label = name
答案 0 :(得分:2)
如错误所示,您不应将department_name_text
作为参数传递给表单。这与字段是否为外键没有任何关系。
通常,您使用request.POST
:
form = DepartmentForm(request.POST)
在测试时,您应该将字典传递给表单:
department = DepartmentForm({'department_name_text': self.department_name})