在django模板中显示foreignkey字段

时间:2013-05-10 10:42:02

标签: django templates foreign-keys

我的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)

如何显示最终存储在班级档案中的教师姓名 我得到的是 _complaint 表中的 teacher_id

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

然后

compaint = student_obj.complaint_set.values()

in complaint.html

{{complaint.teacher_id}}

我想要的是教师姓名而不是id

2 个答案:

答案 0 :(得分:3)

这应该有效 -

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

答案 1 :(得分:2)

首先请更新您的编码风格以进行应用优化

使用

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

上面的一个将缓存数据。之后,当你从字段中调用数据时,它不会破坏你的数据库:),因此你的应用程序将会飞

而不是

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

我同意@Bibhas答案

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

教师的档案是继承Django的Auth模型用户

那明智的

user.user.first_name