gpt4 book ai didi

django - 使用相关名称查询 manyToMany 字段

转载 作者:行者123 更新时间:2023-12-04 02:38:52 24 4
gpt4 key购买 nike

我的模型:

class Course(models.Model):
pass

class CourseRun(models.Model):
course = models.ForeignKey(Course, related_name='course_runs')

class Category(models.Model):
courses = models.ManyToManyField(Course, related_name='category_set')

由于某种原因,我被迫在 Category 模型中添加 many2many 而不是 Course 模型


我的问题:如何按类别 ID 在 CourseRun 上搜索

类似这样的:

CourseRun.objects.filter(course__category__in=[1, 2])

最佳答案

如果您设置 related_query_name [Django-doc] ,那么这就是您在反向过滤时应该使用的名称。如果您设置 related_name [Django-doc] ,而不是 related_query_name ,那么 Django 将使用 related_name对于related_query_name也是。如果不设置 related_namerelated_query_name ,然后 related_name将默认为 <i>modelname</i>_set (所以这里 category_set )和 related_query_name<i>modelname</i> (所以这里是 category)。

选项 1:使用 related_name

因此您可以使用 related_name 进行过滤在您的查询中:

CourseRun.objects.filter(course__<b>category_set</b>__in=[1, 2])

选项 2:设置 related_query_name

另一个选项是设置 related_query_name到别的东西,例如'category' :

class Category(models.Model):
courses = models.ManyToManyField(
Course,
related_name='category_set',
<b>related_query_name='category'</b>
)

然后你可以过滤:

CourseRun.objects.filter(course__<b>category</b>__in=[1, 2])

关于django - 使用相关名称查询 manyToMany 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60299433/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com