2017-03-16 5 views
0

Studentというモデルは、Coursesというモデルとは数多くの関係を持っています。私はAttendと呼ばれる別のモデルを持っています。そこでは、学生が取っているすべてのコースを受け取り、学生が取っているコースを含む選択メニューとしてそれを渡したいと思います。私は外来のキー「学生」を使ってIDを取得し、その学生に属するコースを取得し、それをリストに入れて選択肢に渡そうとしましたが、明らかに機能しませんでした。私はどのように私は学生に属するコースを選択メニューに表示させることができるのか知りたいです。モデルオブジェクトをdjangoの選択肢フィールドに渡します

ここは私のモデルです。

class Attend(models.Model): 
    student = models.ForeignKey(Student, on_delete=models.CASCADE, default="") 
    time_signed_in = models.DateTimeField(auto_now_add=True) 
    isSignedIn = models.BooleanField(default=False) 
    # Below does not work, I get an error 'ForeignKey' object has no attribute 'id' 

    #courses = User.objects.get(id=student.id).courses 
    course = models.ForeignKey(Course, on_delete=models.CASCADE) 
+0

質問が重複しているようです。これを見てhttp://stackoverflow.com/questions/30672219/how-to-create-django-form-choice-list-from-query-in-view – LaraChicharo

+0

@LaraChicharo私はその質問を見て、それは私のようなものです私はフォームに渡された "マイリスト"と何をするべきかわかりません。生徒は一度にそのリストから1つの項目だけを選択できます。これが私がモデルを通してやったように感じる理由です。もっと簡単に使うことができます。何か提案はありますか? – thatguy

答えて

0

受講する講座をレンダリングするには、django formsを試してください。

私が正しく理解していれば、あなたはModelMultipleChoiceFieldを使用するフォームたい:

多対多関係を表す に適した1つまたは複数のモデルオブジェクトの選択を可能にします。 exapmpleが唯一のユーザにデータを表示するように働き、その選択を取得するでしょう

class AttendForm(forms.Form): 
    courses = forms.ModelMultipleChoiceField(queryset=Courses.objects.filter(student__id=id)) 

。この場合には少し異なるアプローチがあり、ModelFormを使用しています。

すべてのModelFormにはsave()メソッドもあります。このメソッドは、フォームにバインドされたデータからデータベースオブジェクトを作成して保存します。

は、データベースへの呼び出しを含む多くのタスクを簡単に実行できる「データベース駆動型」です。

注:この例で使用したクエリーセットは単なる例に過ぎず、このように使用する必要はありません。

関連する問題