我的模特:
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<section class="text">
CLICK THE BUTTON TO<br> CHANGE THE BACKGROUND!
</section>
<button id="btn">CLICK ME!</button>
由于某种原因,我被迫在类别模型而不是课程模型中添加many2many
我的问题: 如何按类别ID在CourseRun上搜索
类似这样的东西:
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')
答案 0 :(得分:5)
如果设置了related_query_name
[Django-doc],则这是在反向过滤时应使用的名称。如果您设置related_name
[Django-doc]而不是related_query_name
,那么Django也将related_name
用于related_query_name
。如果您未设置related_name
和related_query_name
,则related_name
将默认为modelname_set
(因此此处为category_set
),而related_query_name
将默认为{{ 1}}(这里是modelname
)。
category
因此您可以在查询中使用related_name
进行过滤:
related_name
CourseRun.objects.filter(course__category_set__in=[1, 2])
另一种选择是将related_query_name
设置为其他内容,例如related_query_name
:
'category'
然后,您可以使用以下内容进行过滤:
class Category(models.Model):
courses = models.ManyToManyField(
Course,
related_name='category_set',
related_query_name='category'
)