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)

如何显示最终存储在班级简介中的老师姓名当我这样做时, 我得到的是_complaint表中的一列teacher_id

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

接着

compaint = student_obj.complaint_set.values()

在投诉.html

{{complaint.teacher_id}}

我想要的是老师的名字而不是 id

4

2 回答 2

6

这应该工作 -

{{ complaint.teacher.user.user.first_name }}
于 2013-05-10T11:03:36.373 回答
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 
于 2013-05-10T19:10:06.993 回答