是什么" ="在ManyToManyField上的django queryset过滤器中意味着什么?

时间:2018-04-12 19:16:02

标签: django django-queryset manytomanyfield

我不清楚docs是什么" ="过滤条件是指直接在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 个答案:

答案 0 :(得分: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 docs