当前位置: 首页 > 面试题库 >

如何进行多对多Django查询以找到2位给定作者的书?

金高轩
2023-03-14
问题内容

我有一个查询,要求准确过滤具有ID的2位作者

从理论上讲

Book.objects.filter(author__id=1, author__id=2).

这是不可能的。

我怎么解决这个问题?

欢呼声,米奇


问题答案:

起初并不直观,但是答案就摆在我们面前。

Book.objects.filter(author__id=1).filter(author__id=2)

如果您想要完全匹配,则可以通过仅具有2个作者的那些项来进一步过滤此结果。

Book.objects.annotate(count=Count('author')).filter(author__id=1)\
                .filter(author__id=13).filter(count=2)

如果您想动态地精确匹配,该如何处理?

def get_exact_match(model_class, m2m_field, ids):
    query = model_class.objects.annotate(count=Count(m2m_field))\
                .filter(count=len(ids))
    for _id in ids:
        query = query.filter(**{m2m_field: _id})
    return query

matches = get_exact_match(MyModel, 'my_m2m_field', [1, 2, 3, 4])

# matches is still an unevaluated queryset, so you could run more filters
# without hitting the database.


 类似资料:
  • 问题内容: 我有一个查询,要求准确过滤具有ID的2位作者 从理论上讲 这是不可能的。 我怎么解决这个问题? 问题答案: 起初并不直观,但是答案就摆在我们面前。 如果你想要完全匹配,则可以通过仅具有2个作者的那些项来进一步过滤此结果。 如果你希望动态地精确匹配,那么这样的事情呢?:

  • 问题内容: 首先导入k和模块: 声明和对象: 有三个表:和。该Artist对象可以链接到多个。并且该Album对象可以链接到多个对象。的是保持之间的关系和紧密的: 所以我们有Artist链接到Album这是与Genre它看起来像这样:。 完成此设置后,我们Genre首先创建对象: 然后是两张专辑: 和艺术家: 创建数据库后,我们可以查询Albums链接到的内容Genre: 以及Artists链接到

  • 我正在读MongoDB在行动这本书。我有一个关于的问题。 在中,该书给出了一个多对多关系的示例。它给出了文档和文档。 我理解这里的多对多关联。基本上,可以有一个带有_id等数组的键。所以我不想问类似MongoDB多对多关联的问题 我的问题是关于的,书中给出了关于查询多对多关系的两个示例查询。下面是两个查询: > 是什么意思?我以为只存在于Ruby驱动程序中。 中的是什么?是收藏吗? 中的是什么?

  • 本文向大家介绍Django之多对多查询与操作方法详解,包括了Django之多对多查询与操作方法详解的使用技巧和注意事项,需要的朋友参考一下 多对多表之间关系表 models.py文件代码 查询与操作方法代码 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • Eclipse版本:2021-06 (4.20.0)构建id:20210612-2011 Jdk 15.0.2 雄猫8.5.75 Maven 3.8.4 冬眠5.4.22。最终 执行此查询会引发异常: 一个只能有一个,一个可以有很多个s 我认为Structure类的注释映射是错误的,应该是: 而不是这个: 我只需要在运行这个简单的select查询时返回一个对象 任何帮助赞赏。

  • 我有一个Symfony2应用程序与理论作为ORM。在我的应用程序中,我有两个具有一对多关系的实体。一个实体是用户,多个实体是项目。他们的关系配置如下: 用户: 项目: 问题是当我试图获取及其的列表时,Doctrine为每个用户创建单独的查询来获取它的项目。 查询本身非常简单: 是否可以使用Doctrine在一个查询中自动获取用户的所有相关项? 我使用的是SF 2.7.6和条令库,版本如下: