django - Django Querysets - 包括多对多中的整个集合的对象
问题描述
我有一个模型,通过名为 的字段Respondent
与另一个模型相关。Questionnaire
ManyToMany
finished
我有一组四个Questionnaire
对象,并想检索与这四个Respondent
对象有finished
关系的所有对象。
我还想检索逆向:任何与所有四个选定对象Respondent
都没有关系的对象。finished
Questionnaire
我一直在浏览文档,但没有找到适合我的东西。我能够获得Respondent
与至少其中一个对象匹配的所有Questionnaire
对象,Respondent.objects.filter(finished__in=questionnaire_queryset)
但这就是我所获得的。
解决方案
您可以计算 中的finished
对象数量questionnaire_queryset
,例如:
从 django.db.models 导入计数
Respondent.objects.filter(
finished__in=questionnaire_queryset
).annotate(
nfinish=Count('finished')
).filter(
nfinish=len(questionnaire_queryset)
)
我们在这里做一个不questionnaire_queryset
包含任何重复的假设。
推荐阅读
- glib - GLib-GIO-ERROR **:未安装设置架构“com.github.mfru.vala-todo”
- javascript - 如何使用循环创建 div。我在一本书中找到了这段代码,但它不起作用
- vue.js - 为什么 Vuex 的动作会返回一个承诺
? - javascript - Angular ngx-mat-datetime-picker 选择事件
- c# - Log4net 在记录几秒钟后将日志路径更改为安装文件夹。这是为什么?
- c++ - 将成员函数作为参数传递给不同标头中的父类
- android - 在自定义视图中处理变量 Drawable 的正确方法?
- python - 无法调用函数
- google-cloud-platform - GCP vpc相同的目的地,不同的路线
- python - 如何删除位置如此接近的两个节点之一