Если вы установите 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
по умолчанию будет <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])