2013-05-10 3 views
0

Je models.py comme ci-dessous:affichage champ foreignkey dans le modèle de django

class Profile(models.Model): 

    user = models.OneToOneField(User) 

    def __unicode__(self): 
     return "%s" % self.user 

class Student(models.Model): 

    user = models.ForeignKey(Profile) 
    phone_num = models.CharField(max_length=15) 

    def __unicode__(self): 
     return "%s" % (self.user) 

class Teacher(models.Model): 

    user = models.ForeignKey(Profile) 
    phone_num = models.CharField(max_length=15) 

    def __unicode__(self): 
     return "%s" % (self.user) 

class Complaint(models.Model): 

    user = models.ForeignKey(Student) 
    complaint = models.TextField() 
    teacher = models.ForeignKey(Teacher, null=True) 

    def __unicode__(self): 
     return "%s : %s" % (self.complaint) 

Comment puis-je afficher le nom de l'enseignant qui est finalement stockée dans classe Profil Ce que je reçois est une colonne teacher_id dans _complaint table quand je

student_obj = Student.objects.get(name=user_profile_instance) 

puis

compaint = student_obj.complaint_set.values() 

dans complaint.html

{{complaint.teacher_id}} 

ce que je veux est le nom de l'enseignant au lieu de id

Répondre

3

Cela devrait fonctionner -

{{ complaint.teacher.user.user.first_name }} 
+0

Cette réponse devrait fonctionner, mais gardez à l'esprit que dans votre modèle 'Complaint' vous autorisez' Teacher' à être nul. – themanatuf

2

tout d'abord mettre à jour votre style S'il vous plaît de codage à Optimisez votre application

Utilisation

student_obj = Student.objects.select_related().get(name=user_profile_instance) 

La zone ci-dessus mettra en cache les données. Après que chaque fois que u appellent Datas des champs il ne sera pas HIT votre base de données :), où votre application Fly

au lieu de

student_obj = Student.objects.get(name=user_profile_instance) 

et je suis d'accord avec @Bibhas réponse

{{ complaint.teacher.user.user.first_name }} 

profil de l'enseignant est héritant Auth Modèle Django User

Ce sage

user.user.first_name 
Questions connexes