request.POST由ModelForm使用,前缀在单元测试中不与client.post一起使用

时间:2015-09-14 20:26:53

标签: python django django-unittest

我尝试创建一些集成测试来测试我的django项目中的视图。在我看来,我创建了一个带有前缀

的ModelForm
customer_form = CustomerForm(request.POST or None, prefix="customer", instance=customer)

我正在使用django客户端在我的集成测试中尝试以下代码。

response = self.client.get(reverse("customer_edit", kwargs={"customer_id":customer_id})
customer_form = response.context["customer_form"]
data = customer_form.data
prefix = cutomer_form.prefix

self.client.post(reverse("customer-edit", kwargs={"customer_id":customer_id}, data,  follow=True)

但在我看来,当我检查customer_form是否有效时,我知道它不是。 customer_form.errors具有所有必填字段,但数据字典包含值。当在模型表单上设置前缀时,django会做些不同的事情吗?

1 个答案:

答案 0 :(得分:1)

您可以从initial dict中获取值并手动添加前缀:

data = {"{}-{}".format(prefix, k): v for k, v in customer_form.initial.items()}