Django测试:TypeError:__ init __()得到了一个意外的关键字参数

时间:2018-01-05 11:07:28

标签: django django-forms

我从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

1 个答案:

答案 0 :(得分:2)

如错误所示,您不应将department_name_text作为参数传递给表单。这与字段是否为外键没有任何关系。

通常,您使用request.POST

将POST数据传递给表单
form = DepartmentForm(request.POST)

在测试时,您应该将字典传递给表单:

department = DepartmentForm({'department_name_text': self.department_name})