在Django中正确使用related_name

lak*_*esh 21 python django

我有两个使用ForeignKey相关联的模型,并使用了related_name.这是一个例子.

class Student(models.Model):
    name = models.CharField(max_length=255)
    birthday = models.DateField(blank=True)


class Class(models.Model):

    name = models.CharField(max_length=255)
    student = models.ForeignKey(Student,
                                related_name='classes',
                                null=True)

    def __unicode__(self):
        return self.name
Run Code Online (Sandbox Code Playgroud)

例如,我想访问类名.

这是我试过的.

john = Student.objects.get(username = 'john')
print john.classes.name
Run Code Online (Sandbox Code Playgroud)

什么都没打印出来.

但是,当我尝试 john.classes

我得到django.db.models.fields.related.RelatedManager对象在0x109911410.这表明它们是相关的.但我想得到班级名称.

难道我做错了什么?如何使用related_name访问类的名称?需要一些指导.

ser*_*ach 19

是的,课程是经理.一个老师可以是几个班级.所以要输出他们的名字你应该这样做:

john = Student.objects.get(username = 'john')
for class2 in john.classes.all():
   print class2.name
Run Code Online (Sandbox Code Playgroud)

如果您只想为一个学生开设一个班级,那么请使用一对一的关系.在这种情况下,您可以使用您的方法访问相关字段.