Что означает "=" в фильтре наборов запросов django на ManyToManyField?
Из документов мне не ясно, что означает условие фильтра "=" при использовании непосредственно на ManyToManyField
,
Например, если у меня есть:
class Publication(models.Model):
title = models.CharField(max_length=30)
class Article(models.Model):
headline = models.CharField(max_length=100)
publications = models.ManyToManyField(Publication)
Что это .filter(publications=pub)
сделать здесь:
pub = Publication.objects.get(id=1) # or any other Publication
Article.objects.filter(publications=pub)
- Будет ли он выбирать статьи, которые имеют / только эту публикацию?
- Будет ли он выбирать статьи, в которых есть хотя бы эта публикация, среди прочих?
И что .filter(publications=pubs)
значит здесь:
pubs = Publication.objects.filter(id__in=[1,2]) # or any other subset query of Publication
Article.objects.filter(publications=pubs)
- Будет ли он выбирать статьи, которые имеют / только это подмножество публикаций?
- Будет ли он выбирать статьи, в которых есть, по крайней мере, все публикации, среди прочих?
- Будет ли он выбирать статьи, в которых есть хотя бы одна из этих публикаций?
1 ответ
pub = Publication.objects.get(id=1) # or any other Publication
Article.objects.filter(publications=pub)
Эта первая часть означает, что он получит все статьи, которые хотя бы связаны с публикацией с id=1.
pubs = Publication.objects.filter(id__in=[1,2]) # or any other subset query of Publication
Article.objects.filter(publications=pubs)
Эта вторая часть получит все статьи с публикациями либо с id = 1, либо с id=2.
Для получения дополнительной информации попробуйте документы Django.