如何使用Django测试client.post来测试具有ModelChoiceField的表单?应该如何编写传递给post方法的数据字典?我正在做的方式根本没有选择任何值。
我有一个包含以下字段的表单:
country = forms.ModelChoiceField(
label="País",
queryset=Country.objects.all().order_by('name'),
required=True,
widget=forms.Select(attrs={
'onchange': "Dajaxice.party.update_country(Dajax.process, {'option':this.value})"
},
)
我还有以下测试用例:
def test_party_profile_sucessfully_saved(self):
self.client.login(username='Party1', password='BadMotherF')
response = self.client.post(reverse('party'), data={'slx_legal_type': '1', 'city': 'Belo Horizonte', 'country': '32',
'mobile': '+55-31-55555555', 'name': 'Roberto Vasconcelos Novaes',
'phone': '+55-31-55555555', 'slx_cnpj': '', 'slx_cpf': '056846515',
'slx_ie': '', 'slx_im': '', 'slx_rg': 'MG9084545', 'street':
'Rua Palmira, 656 - 502', 'streetbis': 'Serra', 'subdivision': '520',
'zip': '30220110'},
follow=True)
self.assertContains(response, 'Succesfully Saved!')
此表单可以正常使用。但是当我使用上述测试用例进行测试时,作为模型选择字段(国家/地区)的数据传递的选择不会被选中。我试图传递值(32)和国家名称('Brasil')或其他。
答案 0 :(得分:1)
我猜您需要传递国家/地区的ID或模型实例。
如果您的国家/地区'巴西'的ID为32,则可以传入
{....
'country' : 32
....}
或
您可以先使用
获取国家/地区country = Country.objects.get(id=32)
{....
'country': country
....}