Джанго местные вкусы США - PullRequest
7 голосов
/ 21 июня 2011

Следующее отображается вместо поля в моем шаблоне.

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

мой шаблон имеет

{{ form.state }}

в чем может быть проблема?

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()

также есть ли в любом случае, я могу сделать состояние и почтовый индекс необязательным?

1 Ответ

9 голосов
/ 21 июня 2011

Чтобы ограничить варианты раскрывающимся списком, используйте us.us_states.STATE_CHOICES в вашей модели и us.forms.USStateField() вместо us.forms.USStateSelect() в ваших формах.

Чтобы сделать поле необязательным в форме, добавьте blank = True к этому полю в модели.

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)

Вместо STATE_CHOICES есть несколько параметров, которые вы можете найти в localflavor документации .STATE_CHOICES является наиболее всеобъемлющим, но это может быть не то, что вы хотите.Если вам просто нужно 50 штатов плюс DC, используйте US_STATES.


. В этом ответе предполагается, что вы используете ModelForms .Если нет, то так и должно быть.После того, как вы создали свою модель, вы должны следовать DRY и создавать базовые формы, например, так:

from django.forms import ModelForm

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

И он наследует ваши поля от вашей модели.Вы можете настроить доступные поля, если вам не нужна вся модель, с помощью других параметров class Meta, таких как fields или exclude.Формы модели так же настраиваемы, как и любая другая форма, они просто начинаются с предположения о полях вашей модели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...