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

标签 python django django-orm

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

假设我有一个名为 Exam 的模型与 Student 有关系这与StudentProfile有关- 我正在过滤Exam按字段划分的对象 has_scholarship在学生的个人资料中,因此我正在创建一个查询,例如: student__student_profile_has_scholarship并将其传递给 django 的 filter() 函数并且它可以工作。

但是现在,我想使用所有可能的 <option> 来渲染 html 表单s,为此我需要找到提到的可能选项。 如何从上述查询字符串中找到所有对象,以获取 student__student_profile 的所有对象来 self 的Exam模型?无论关系链有多长,假设关系都是正确的,这也必须起作用。

最佳答案

我假设有模型:

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)

如果是:从考试获取所有学生或个人资料:

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)>]>

关于python - 如何选择与我的模型相关的模型对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56901214/

相关文章:

python - 如何使用 Python 检查哪个窗口管理器正在运行?

django - 如何删除 Django 中 FileInput 小部件的 "Currently"标记和链接?

javascript - Django 和 Ajax - 提交表单集

django - 如何将 sql mod 转换为 django orm?

python - 在 numpy 中从一个数组到另一个数组获取距下一个日期的天数

python - 导入的模块不正确

c++ - Linux/Windows 的 sleep 时间

python - celery ,组任务,AttributeError : 'NoneType' object has no attribute 'app'

django - reverse_set 长度上的过滤模型

python - Django的bulk_create导致重复条目完整性错误