2012-03-23 15 views
0

私はDjangoフォームを使用しており、リストボックスを作成する必要があります。リストボックスDjangoフォーム

Djangoフォームフィールドのlistboxに相当するものは何ですか?

私は

https://docs.djangoproject.com/en/dev/ref/forms/fields/#modelchoicefield 

が、それを見つけることができません@のドキュメントをチェックしました。ここで

は、私が実行しようとすると

Models.py

class Volunteer(models.Model): 
    NO_OF_HRS = (('1','1') 
        ('2','2')) 
    datecreated = models.DateTimeField() 
    volposition = models.CharField(max_length=300) 
    roledesc = models.CharField(max_length=300) 
    Duration = models.CharField(choices=NO_OF_HRS,max_length=1)** 

forms.py

class VolunteerForm(forms.ModelForm) 
    datecreated = forms.DateField(label=u'Creation Date') 
    volposition = forms.CharField(label=u'Position Name', max_length=300) 
    roledesc = forms.roledesc(label=u'Role description',max_length=5000) 
    Duration = forms.CharField(widget=forms.select(choices=NO_OF_HRS),max_length=2) 

、私は次のエラーを取得する、私のコードスニペットで

NO_OF_HRSは定義されていません

答えて

1

NO_OF_HRSタプルはモデル内で定義されており、フォームでは使用できません。これは、他のPythonオブジェクトと同様にforms.pyにインポートする必要があります。このようなあなたのforms.pyでモデル定義およびインポート外部のタプルを移動してみてください:

models.py使用したいようですが、また見え

NO_OF_HRS = (('1','1') 
      ('2','2')) 

class Volunteer(models.Model): 
    # ... 
    duration = models.CharField(choices=NO_OF_HRS, max_length=1) 

forms.py

from path.to.models import NO_OF_HRS 

class VolunteerForm(forms.Form): 
    # ... 
    duration = forms.CharField(widget=forms.Select(choices=NO_OF_HRS), max_length=1) 

a ModelForm。この場合、ボランティアフォームにフィールド定義を追加する必要はありません。モデルを内部メタクラスに設定するだけです。

forms.py

from path.to.models Volunteer 

class VolunteerForm(forms.ModelForm): 
    class Meta: 
     model = Volunteer 
+0

私はあなたが言及しているものを試してみましたが、私はこのエラー-'module 『」オブジェクトが属性を持っていない』を選択し得ます。 Duration = forms.CharField(widget = forms.select(choices = NO_OF_HRS)、max_length = 2) – user1050619

+0

スニペットからコピー&ペーストエラーが発生しました。これは 'forms.Select'でなければなりません(クラスは大文字で始まります)。また、[完全な例]のドキュメント(https://docs.djangoproject.com/en/1.4/topics/forms/modelforms/#a-full-example)も参照してください。 –

+0

ありがとうございました – user1050619

関連する問題