【问题标题】:what does "=" mean in a django queryset filter on a ManyToManyField?“=”在ManyToManyField上的django查询集过滤器中是什么意思?
【发布时间】:2018-09-23 01:30:31
【问题描述】:

我不清楚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)
  • 它会选择完全/仅包含此出版物子集的文章吗?
  • 它会选择至少包含所有出版物的文章吗?
  • 它会选择至少有这些出版物之一的文章吗?

【问题讨论】:

    标签: django django-queryset manytomanyfield


    【解决方案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

    【讨论】:

      猜你喜欢
      • 2014-06-12
      • 1970-01-01
      • 2011-02-03
      • 1970-01-01
      • 2010-11-30
      • 2015-07-29
      • 1970-01-01
      • 2014-09-14
      • 1970-01-01
      相关资源
      最近更新 更多