您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Django queryset获取准确的多方查找

Django queryset获取准确的多方查找

一种方法是使用过滤器链:

node_query = Node.objects.all()
pk_list = [10, 6, 3]

for pk in pk_list:
    node_query = node_query.filter(tags=pk)

现在,node_query将匹配具有至少三个标签为pk 10、6、3的节点。要完全匹配三个标签

正确的答案是:

from django.db.models import Count

pk_list = [10, 6, 3]
node_query = Node.objects.annotate(count=Count('tags')).filter(count=len(pk_list))

for pk in pk_list:
    node_query = node_query.filter(tags__pk=pk)
Go 2022/1/1 18:18:58 有390人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶