2016-04-07 25 views
0

私は2つのモデルを用意しています。これまでのところ、initメソッドの選択肢リストを更新することによって、タイトルが使用されるモデルに新しいオブジェクトを追加すると、選択肢リストがすぐに更新されるようになっていました。しかし、私がオプションとして選択して保存することにしたとき、私は次のようになります:有効な選択肢を選択してください。例は利用可能な選択肢の1つではありません。Djangoフィールドの選択肢が正しく更新されない

モデル::

class Assessment(models.Model): 
    title = models.CharField(max_length=200) 

    SPECIFIC_REQUIREMENTS_CHOICES =() 
    SPECIFIC_REQUIREMENTS_CHOICES_LIST = [] 

    for sRequirement in SpecificRequirements.objects.all(): 
     SPECIFIC_REQUIREMENTS_CHOICES_LIST.append((sRequirement.title, sRequirement.title)) 

    SPECIFIC_REQUIREMENTS_CHOICES = SPECIFIC_REQUIREMENTS_CHOICES_LIST 

    sRequirementChoice = models.CharField(max_length=200, choices=SPECIFIC_REQUIREMENTS_CHOICES, 
           default='') 

形式:

class AssessmentForm(forms.ModelForm): 
    class Meta: 
     model = Assessment 
     fields = ['title', 'sRequirementChoice'] 

    def __init__(self, *args, **kwargs): 
     super(AssessmentForm, self).__init__(*args, **kwargs) 
     SPECIFIC_REQUIREMENTS_CHOICES_LIST = [] 

     for sRequirement in SpecificRequirements.objects.all(): 
      SPECIFIC_REQUIREMENTS_CHOICES_LIST.append((sRequirement.title, sRequirement.title)) 

     SPECIFIC_REQUIREMENTS_CHOICES = SPECIFIC_REQUIREMENTS_CHOICES_LIST 

     self.fields['sRequirementChoice'].choices = SPECIFIC_REQUIREMENTS_CHOICES 
+0

なぜこれをやっていますか?なぜあなたはForeignKeyを使用していないのですか? –

答えて

1

選択肢がどのように働くかのモデルではありません、私は、サーバーを再起動すると、それは私がやった仕事を、行います。モデル内で選択肢を動的に設定することは想定されていません。

モデルでSpecificRequirementsとForeignKeyの関係を使用することを検討する必要があります。

+0

私は正しい例に沿ってガイドしてくれるでしょうか、例へのリンクをお願いしますか? – DaViDa

+0

ここから開始:https://docs.djangoproject.com/ja/1.9/ref/models/fields/#foreignkey – v1k45

+0

あなたの助けをありがとう! – DaViDa

関連する問題