The following hack also seems to work in both django admin and forms defined in views:
from django.contrib.localflavor.us.us_states import STATE_CHOICES
USStateField.choices = STATE_CHOICES
The thing here is that the forms.py definition in contrib/localflavor/us/forms.py has a USStateSelect widget that does define choices as STATE_CHOICES. However, the model in contrib/localflavor/us/models.py does not define these choices. This way, blank=True settings for the field do not result in a proper blank first entry in the Select, I found out looking at db/models/fields/init.py.
An alternative fix is to change contrib/localflavor/us/models.py and add a constructor like this:
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.