2011-06-21 7 views
7

テンプレートのフィールドではなく、次のように表示されます。django localflavors US

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

私は州とジップを任意に作ることができますか?

+0

フォームクラスのコードを投稿できますか? –

+0

ビューのeidtsありがとう – Eva611

答えて

9

選択肢をドロップダウンリストに限定するには、モデル内でus.us_states.STATE_CHOICESを使用し、フォームにus.forms.USStateSelect()の代わりにus.forms.USStateField()を使用します。

フィールドでフォームをオプションにするには、モデルのフィールドに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、あなたがin the localflavor documentation見つけることができるいくつかのオプションがあります。 STATE_CHOICESが最も包括的ですが、それはあなたが望むものではないかもしれません。 DCを加えた50の状態がほしいのであれば、US_STATESを使ってください。


この回答はModelFormsを使用していることを前提としています。あなたがいない場合、あなたはする必要があります。あなたのモデルを作ったら、DRY従うので、のような基本的なフォームを作成する必要があります。

from django.forms import ModelForm 

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

をそして、それはあなたのモデルから、あなたのフィールドを継承します。他のclass Metaオプション(fieldsまたはexcludeなど)を使用して、モデル全体を必要としない場合は、使用可能なフィールドをカスタマイズできます。モデル・フォームは他のフォームと同様にカスタマイズ可能です。モデル・フィールドの前提から始めます。

+0

USStateFieldをオプションにするとエラーになります – Eva611

+0

USStateFieldを*モデル*または*フォーム*でオプションにしていますか?これがフォームの中にあり、モデルに関連付けられていない場合は、 'blank = True'の代わりに' required = False'をフォームに使用してください。モデルに 'blank = True'がなく、そのフィールドなしで新しいエントリを追加しようとすると、エラーが発生します。 –

+1

米国州選択のドロップダウンを表示しないと、USStateSelectと呼ばれるのはなぜですか?あるいは私は何かを逃している。 – Chris

関連する問題