如何选择与我的模型相关的模型对象

时间:2019-07-05 10:22:54

标签: python django django-orm

我正在为我的应用程序创建一个过滤系统,我想呈现<select>字段,这些字段预先填充了可能的选项。

让我们假设我有一个名为Exam的模型,它与Student有关系,并且与StudentProfile有关系-我正在按字段{{1 }}在学生的个人资料中,因此我正在创建一个查询,例如:Exam并将其传递给django的filter()函数,它可以正常工作。

但是,现在,我想使用所有可能的has_scholarship呈现html表单,为此,我需要找到上述可能的选项。 如何从上述查询字符串中找到所有对象,以从我的student__student_profile_has_scholarship模型中获取<option>的所有对象?无论关系链假设关系都是正确的。

1 个答案:

答案 0 :(得分:0)

我认为有模型:

class Exam(models.Model):
    example = models.CharField(max_length=255, default="")


class Stydent(models.Model):
    exam = models.ManyToManyField(Exam, related_name="students")


class StydentProfile(models.Model):
    stud = models.ForeignKey(Stydent, related_name="profiles",
                             on_delete=models.SET_NULL, default=None, null=True)

如果是这样:从exam获取所有学生或个人资料:

In [27]: exam
Out[26]: <Exam: Exam object (1)>

In [27]: exam.students.all()
Out[28]: <QuerySet [<Stydent: Stydent object (1)>]>

In [29]: exam.students.model.objects.all()
Out[29]: <QuerySet [<Stydent: Stydent object (1)>, <Stydent: Stydent object (2)>]>

In [30]: exam.students.model.profiles.field.model.objects.all()
Out[30]: <QuerySet [<StydentProfile: StydentProfile object (2)>, <StydentProfile: StydentProfile object (1)>]>