Кажется, что следующий хак работает и в админке django, и в формах, определенных в представлениях:
from django.contrib.localflavor.us.us_states import STATE_CHOICES
USStateField.choices = STATE_CHOICES
Дело в том, что определение forms.py в contrib / localflavor / us / forms.py имеет виджет USStateSelect, который определяет выбор как STATE_CHOICES. Однако модель в contrib / localflavor / us / models.py не определяет эти варианты. Таким образом, пусто = истинные настройки для поля не приводят к правильной первой пустой записи в Select, я узнал, глядя на db / models / fields / init .py.
Альтернативное решение - изменить contrib / localflavor / us / models.py и добавить конструктор, подобный этому:
class USStateField(Field):
def __init__(self, *args, **kwargs):
from us_states import STATE_CHOICES
kwargs.setdefault('max_length', 2)
kwargs.setdefault('choices', STATE_CHOICES)
super(USStateField, self).__init__(*args, **kwargs)
# etc. etc.