tipos personalizados partir modelos formularios form fields example ejemplos avanzados python django django-forms django-testing django-tests

python - personalizados - post django



Cómo probar un formulario de Django con un ModelChoiceField usando el cliente de prueba y el método de publicación (1)

Supongo que debe pasar el ID del país o la instancia del modelo.

Si tiene un país ''Brasil'' con ID 32, puede pasar

{.... ''country'' : 32 ....}

o

primero puede obtener el país mediante el uso de

country = Country.objects.get(id=32) {.... ''country'': country ....}

¿Cómo uso Django test client.post para probar un formulario que tiene un ModelChoiceField? ¿Cómo debe escribirse el diccionario de datos en el método de publicación? La forma en que estoy haciendo no selecciona ningún valor en absoluto.

Tengo un formulario con el siguiente campo:

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})" }, )

También tengo el siguiente caso de prueba:

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!'')

Esta forma funciona bien. Pero cuando lo pruebo usando el caso de prueba antes mencionado, la elección aprobada como datos para el Campo de elección del modelo (País) no se elige. Intenté pasar el valor (32) y el nombre del país (''Brasil'') o lo que sea.