django嵌套模型字段访问

django嵌套模型字段访问,django,django-models,Django,Django Models,以下是场景: 我有一个学生模型,学科领域与学科模型的多对多关系相联系 class Student(models.Model): (...) subject = models.ManyToManyField(Subject) 在主题模型中,我有一个程序字段,与程序模型的多对多关系相连接。主题模型也得到了查菲尔德的名字 class Subject(models.Model): (...) program = models.ManyToManyField(Progra

以下是场景:

我有一个学生模型,学科领域与学科模型的多对多关系相联系

class Student(models.Model):
    (...)
    subject = models.ManyToManyField(Subject)
在主题模型中,我有一个程序字段,与程序模型的多对多关系相连接。主题模型也得到了查菲尔德的名字

class Subject(models.Model):
    (...)
    program = models.ManyToManyField(Programs)
在程序模型中,我有一个字段:

class Programs(models.Model):
    name = models.CharField(max_length=40)
    (...)
Django为多对多字段创建附加表。在我的应用程序中,我创建(使用表单)一个程序和对应于该程序的主题。然后我创建一些学生并选择一些科目。
如何访问程序名字段(Student.objects.all())并显示学生正在使用的程序名
是否可能,或者我需要在学生模型中创建与程序模型的多对多关系相关的附加字段?

我是否认为您希望返回属于Student.subject中每个主题的程序的程序名列表

如果是这样,您可以将其用作学生模型的方法:

def get_program_names(self)
    programs = []
    for subject in self.subjects:
        programs += [program.name for program in subject.program]
    return programs
然而,从您的问题听起来,您只希望返回一个程序名。如果是这种情况,那么您可能应该使用ForeignKey字段替换您的多个字段,这在两个模型之间提供了一对一的关系,这意味着此方法应该有效:

def get_program_name(self):
    return self.subject.program.name
(无论哪种方式,您都没有理由必须在学生模型和课程模型之间创建直接链接,除非您希望减少数据库调用的数量,在这种情况下,您可以向学生添加一个字段,该字段使用最新的课程名或类似名称进行更新。)


我希望我没有误解你的问题。

你没有误解。在django车型中,通过表格查看
。我想这就是你指的。