2016-07-05 4 views
0

私は以下の3つのテーブルを持っています。 ユーザーテーブルには学生情報があります。 LecMstテーブルには講義情報があります。 LecReqテーブルには学生が登録した講義情報があります。外部キーオブジェクトの値を取得するにはどうすればよいですか?

models.py

class User(models.Model):  
    usn = models.CharField(max_length=20, primary_key=True, verbose_name='usn') 
    nm = models.CharField(max_length=50, blank=True, null=True, verbose_name='name') 
    userid = models.CharField(max_length=20, blank=True, null=True, verbose_name='ID') 

class LecMst(models.Model): 
    leccode = models.CharField(max_length=15, null=False, primary_key=True, verbose_name='lecture_code') 
    lecname = models.CharField(max_length=100, null=True, verbose_name='lecture_name') 

class LecReq(models.Model): 
    leccode_id = models.ForeignKey(LecMst, db_column='leccode', verbose_name='lecture_code', related_name = 'lecreqs') 
    usn_id = models.ForeignKey(User, db_column='usn', verbose_name='usn', related_name = 'lecreqs') 

students_by_lecture.htmlは、特定のクラスの生徒のリストが表示されます。 そして、私は学生名、leccode_id、usn_id以外の講義名を表示したいと思う。

lectures.py以下

def student_list_by_lecture(request): 

    qs_leccode = request.GET['leccode'] 

    if qs_leccode: 

     qs = LecReq.objects.filter(leccode_id=qs_leccode) 

     paginator = Paginator(qs, 25) # Show 25 posts per page 
     page = request.GET.get('page') 
     try: 
      lecture_members = paginator.page(page) 
     except PageNotAnInteger: 
      lecture_members = paginator.page(1) 
     except EmptyPage: 
      lecture_members = paginator.page(paginator.num_pages) 

    return render(request, 'students_by_lecture.html', { 
     'lecture_members' : lecture_members, 
     'qs_leccode' : qs_leccode, 
    }) 

は 何ができるI入力???? students_by_lecture.htmlです。

<table> 
    <thead> 
     <tr> 
      <th>Lecture Code</th> 
      <td>Lecture Name</td> 
      <td>Student Name</td> 
      <td>Student No (usn)</td> 
     </tr> 
    </thead> 
    <tbody>{% for member in lecture_members %} 
     <tr> 
     <td>{{ member.????? }}</td> 
     <td>{{ member.????? }}</td> 
     <td>{{ member.????? }}</td> 
     <td>{{ member.????? }}</td> 
     </tr>{% endfor %} 
    </tbody> 
</table>        
+1

正確に何をしたいのかはわかりません。 – Wtower

+0

私はstudents_by_lecture.htmlを追加しました。もう一度質問を確認できますか?私は、特定の講義に登録された講義名と学生名を印刷したいと思います。 –

答えて

1

関連オブジェクトは、のように容易にアクセスすることができる。

{{ member.leccode_id.lecname }} 

Django Docs: Lookups that span relationshipsの詳細情報

厳密には命名規則が間違っていることにも注意してください。フィールドの名前をleccodeで、leccode_idではない名前にする必要があります。なぜなら、エンティティのIDにアクセスするには、leccode_id_idを使用する必要があるからです。

+0

ありがとうございます。あなたのコメントは私にとって大きな助けとなりました。 –

0

あなたはそうしようと直接model.foreign_model_field.field

のような外国人のモデルオブジェクトにアクセスすることができます。講義名試行について

:{{member.leccode_id.lecname}} 生徒名の試みについて:{{member.usn_id.nm}}

+0

ご返信ありがとうございます。 ^^ –

1

だから、私は何を取得しようとしていることだと思います:講義コードとともに、その講義に登録されているすべての講義プリント、学生(名前と番号)のため

lectures_info = LecReq.objects.prefetch_related('leccode_id', 'usn_id') 

for lecture in lectures_info: 
    print lecture.leccode_id.leccode 
    print lecture.leccode_id.lecname 
    print lecture.usn_id.nm 
    print lecture.usn_id.userid 

これは明らかに、外部キーフィールドにアクセスする方法、あなたの質問におそらく答えているクエリの側面です。あなたの要件に応じてそれをさらに操作してみてください。そうすれば、私があなたをさらに助けることができるようにコメントしてください。

希望するもの:

+0

コメントありがとうございます。 ^^ –

関連する問題