2013-05-10 65 views
0

我有models.py象下面这样:显示外键字段

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) 

如何显示其最终存储在类档案老师的名字 我得到的是一列在teacher_id_complaint表,当我做

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

然后

compaint = student_obj.complaint_set.values() 
在complaint.html

{{complaint.teacher_id}} 

我要的是老师的名字,而不是ID

回答

3

这应该工作 -

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

这个答案应该有效,但请记住,在您的“投诉”模型中,您允许'Teacher'为null。 – themanatuf 2013-05-10 11:24:43

2

,首先请更新编码到你的风格让您的应用优化

使用

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

上述一个将缓存DATAS。每个当u调用DATAS从田地它不会打你的数据库:)时间后,因此您的应用程序将飞

,而不是

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

,我与@Bibhas达成一致回答

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

教师的个人资料被继承Django的验证型号用户

的明智

user.user.first_name