【问题标题】:Django many2many is a subset of another setDjango many2many 是另一个集合的子集
【发布时间】:2017-10-22 18:21:09
【问题描述】:

给定一个具有 m2m 字段的模型,假设 Article 有多个 Authors。 获取作者集合是另一个集合子集的所有文章的最有效方法是什么?

class Article(models.Model):
    authors = models.ManyToManyField('Author')

获取由此列表中的一位或多位作者撰写但没有任何作者不在此列表中的所有文章。

authors_list = ['Tom', 'John', 'Sara', 'Kati']
  • “Tom”撰写的文章会匹配。
  • “Tom”和“Sara”写的文章会匹配。
  • 但是,“Tom”和“Alter”撰写的文章不匹配。

【问题讨论】:

  • 您的Author 模型是什么样的?您尝试了哪些方法?

标签: python django m2m database-optimization


【解决方案1】:

在不了解您的作者模型的情况下,这只是一个猜测,但这种通用方法应该可行:

authors = Author.objects.filter(first_name__in=authors_list)
others = Author.objects.exclude(first_name__in=authors_list)
queryset = Article.objects.filter(authors__in=authors)
queryset = queryset.exclude(authors__in=others)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-05
    • 1970-01-01
    • 1970-01-01
    • 2021-12-13
    • 1970-01-01
    • 1970-01-01
    • 2011-09-13
    • 1970-01-01
    相关资源
    最近更新 更多