2016-07-05 17 views
0

Ich habe 3 Tabellen wie folgt. Benutzertabelle hat Studenteninformationen. LecMst Tisch hat Vortragsinfo. Und LecReq Tabelle hat Vorlesung Info Studenten haben sich registriert.Wie kann ich den Fremdschlüsselobjektwert erhalten?

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 zeigt Studentenliste in der speziellen Klasse. Und die Seite Ich möchte Student Name und Vorlesungsname neben leccode_id, usn_id zeigen.

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, 
    }) 

Unten ist students_by_lecture.html Was kann ich Eingang ????.

<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

Es ist nicht sehr klar für mich, was genau Sie tun möchten. – Wtower

+0

Ich habe students_by_lecture.html hinzugefügt. Können Sie die Frage noch einmal überprüfen? Ich möchte den Vorlesungsnamen und den Namen des Studenten, die in dem jeweiligen Vortrag eingetragen sind, ausdrucken. –

Antwort

1

Die zugehörigen Objekte zugegriffen werden kann leicht als:

{{ member.leccode_id.lecname }} 

Weitere Informationen unter Django Docs: Lookups that span relationships.

Bitte beachten Sie auch, dass Ihre Namenskonvention streng falsch ist. Sie sollten das Feld nach seinem Entitätsnamen leccode und nicht nach leccode_id benennen, da Sie jetzt zum Zugriff auf die ID der Entität leccode_id_id verwenden müssen.

+0

Danke. Ihr Kommentar war eine enorme Hilfe für mich. –

0

können Sie Fremdobjektmodell direkt wie model.foreign_model_field.field Zugang

So versuchen.

Für Vorlesung Name try {{}} member.leccode_id.lecname Für Studentennamen try {{}} member.usn_id.nm

+0

Danke für Ihre Antwort. ^^ –

1

Also, ich denke, was Sie versuchen zu bekommen:

für jeden Vortrag Druck, der Student (Name und Nummer) zusammen mit dem Vortrag Code in dieser Vorlesung registriert.

Dies ist offenbar der Abfrageaspekt, der wahrscheinlich Ihre Frage beantwortet: wie auf das Fremdschlüsselfeld zuzugreifen. Bitte versuchen Sie es weiter zu manipulieren, je nach Ihren Anforderungen oder sonst, kommentieren Sie, damit ich Ihnen weiterhelfen kann.

Hoffe es hilft :)

+0

Danke für Ihren Kommentar. ^^ –