我如何从一个被喜欢的表到另一个被自己喜欢的表获取数据



我有三个表,结果、课程和学习,它们如下

class Study(models.Model):
id_study = models.IntegerField(primary_key=True)
study_name = models.CharField(max_length=45)
description = models.CharField(max_length=45, blank=True, null=True)
language = models.CharField(max_length=45)
number_of_years = models.CharField(max_length=45)
class Course(models.Model):
id_course = models.AutoField(primary_key=True)
course_name = models.CharField(max_length=45, blank=True, null=True)
description = models.CharField(max_length=45, blank=True, null=True)
credits = models.CharField(max_length=45, blank=True, null=True)
teacher_id_teacher = models.ForeignKey('Teacher', models.DO_NOTHING, db_column='teacher_id_teacher')
study_id_study = models.ForeignKey('Study', models.DO_NOTHING, db_column='study_id_study')
class Exam(models.Model):
id_exam = models.AutoField(primary_key=True)
room = models.CharField(max_length=45, blank=True, null=True)
resit = models.CharField(max_length=45, blank=True, null=True)
date = models.DateField(blank=True, null=True)
time = models.TimeField(blank=True, null=True)
course_id_course = models.ForeignKey(Course, models.DO_NOTHING, db_column='course_id_course')

class Result(models.Model):
id_result = models.AutoField(primary_key=True)
grade = models.IntegerField(blank=True, null=True)
exam_id_exam = models.ForeignKey(Exam, models.DO_NOTHING, db_column='exam_id_exam')
date = models.DateField(blank=True, null=True)
student_id_student = models.ForeignKey('Student', models.DO_NOTHING, db_column='student_id_student')
passed = models.CharField(max_length=45, blank=True, null=True)

我想根据我给的study_id得到一个结果对象

结果取决于考试,考试取决于课程,课程取决于学习

提前感谢

您可以使用双下划线表示法来跟踪查询中的关系

Result.objects.filter(
exam_id_exam__course_id_course__study_id_study__id=study_id
)

值得一提的是:您对外键有一个奇怪的命名约定,通常名为Exam的模型的外键将命名为exam,您已经为每个外键设置了db_column,因此不需要以这种方式命名它们。如果你把他们的名字改成小写的型号名称,它看起来像这样,这可能更可读

Result.objects.filter(exam__course__study__id=study_id)

相关内容

最新更新