2016-07-19 9 views
0

を選択したモデルの選択肢を保存することはできません マイmodels.pyをCharFieldです:私はMODEL2を保存しようとするとDjangoは、私がモデルで選択された選択肢を保存したい値

qobj = Model1.objects.all() 

CHOICE = (
    (x.id, x.name) for x in qobj 
) 


class Model2(models.Model): 
    choice_field = models.CharField(max_length=77, choices=CHOICE) 

class Model2Form(ModelForm): 
    class Meta: 
     model = Model2 
     fields = ['choice_field'] 

私はエラーを得た:

"Select a valid choice. 5 is not one of the available choices.".

私はforms.ModelChoiceFieldを試していましたが、Model2.get_choice_field_display()forms.ChoiceField、およびウィジェットSelectを動作させることはできません。 誰かがこの問題を解決する方法を知っているかもしれませんか?

+1

あなたのフォームコードとフォームの使用方法のビューコードを含む質問を編集してください。 –

+0

私はビューを使用しません –

答えて

1

choice_fieldCharFieldと定義していましたが、あなたの選択は整数としてキーとしてidを使用しています。 choice_fieldmodels.IntegerFieldに変更する必要があります。

また、choice_fieldのようなサウンドは、別のモデルのエントリに基づいています。 CHOICES変数が1回だけ評価されるため、データを取り込む方法が機能しない可能性があります。あなたは代わりにchoice_fieldためForeignKeyを使用する必要があります。

class Model2(models.Model): 
    choice_field = models.ForeignKey(Model1) 

フォームをレンダリングするのDjangoのデフォルトの方法を使用する場合は、あなたは間違いなくそれを使用する必要がありますので、ForeignKeyは、ちょうどchoicesのようなドロップダウンとしてレンダリングされます。

+0

私はIntegerFieldを試していませんでした。あなたが正しいかもしれません。選択肢の値は整数ではありませんか? –

+0

私は自分の答えを編集しました。 –

+0

しかしモデル1は選択フィールドではありません –

関連する問題