2011-06-21 14 views
7

Aparece lo siguiente en lugar de un campo en mi plantilla.django localflavors EE. UU.

<django.contrib.localflavor.us.forms.USStateSelect object at 0x92b136c> 

mi plantilla tiene

{{ form.state }} 

lo que podría ser el problema?

class RegistrationForm(forms.Form): 

    first_name = forms.CharField(max_length=20) 
    last_name = forms.CharField(max_length=20) 
    phone = USPhoneNumberField() 
    address1 = forms.CharField(max_length=45) 
    address2 = forms.CharField(max_length=45) 
    city = forms.CharField(max_length=50) 
    state = USStateSelect() 
    zip = USZipCodeField() 

también está allí de todos modos puedo hacer que el estado y la cremallera sean opcionales?

+0

¿Podría publicar el código para su clase de formulario? –

+0

view eidts gracias – Eva611

Respuesta

9

Para limitar las opciones a una lista desplegable, use us.us_states.STATE_CHOICES en su modelo y use us.forms.USStateField() en lugar de us.forms.USStateSelect() en sus formularios.

Para hacer que un campo sea opcional en un formulario, agregue blank = True a ese campo en el modelo.

from django.contrib.localflavor.us.us_states import STATE_CHOICES 
from django.contrib.localflavor.us.models import USStateField 

class ExampleLocation(models.Model): 
    address1 = models.CharField(max_length=45) #this is not optional in a form 
    address2 = models.CharField(max_length=45, blank = True) #this is made optional 
    state = USStateField(choices = STATE_CHOICES) 

En lugar de STATE_CHOICES, hay varias opciones que puede encontrar in the localflavor documentation. STATE_CHOICES es el más completo, pero puede que no sea lo que deseas. Si solo desea 50 estados, más DC, use US_STATES.


Esta respuesta asume que está usando ModelForms. Si no lo eres, deberías serlo. Una vez que haya hecho su modelo, debe seguir SECO y crear formas básicas de este modo:

from django.forms import ModelForm 

class ExampleForm(ModelForm): 
    class Meta: 
     model = ExampleLocation 

Y hereda sus campos de su modelo. Puede personalizar qué campos están disponibles, si no desea el modelo completo, con otras opciones class Meta, como fields o exclude. Los formularios de modelo son tan personalizables como cualquier otra forma, solo comienzan con la suposición de los campos de su modelo.

+0

arroja un error cuando hago que USStateField sea opcional – Eva611

+0

¿Está haciendo que USStateField sea opcional en el * modelo *, o en el * formulario *? Si esto solo está en un formulario, y no está asociado con un modelo, use 'required = False' en el formulario, en lugar de' blank = True'. Tenga en cuenta que si no tiene 'blank = True' en el modelo e intenta agregar una nueva entrada sin ese campo, recibirá un error. –

+1

¿Por qué se llama USStateSelect si no representa una selección desplegable de opciones de estado de EE. UU.? O me estoy perdiendo algo. – Chris

Cuestiones relacionadas