django - 如何从 Django 中的 2 个查询集中获取公共对象?
问题描述
我有 2 个相同模型的查询集(从不同的函数中获得)。现在我想根据一些字段来查看它们中的共同元素,例如:
first_name, last_name, date_of_birth, abc_field(boolean field)
它们将具有不同的主键和唯一 ID。它们之间的唯一区别应该是 abc_field 在一个对象中应该是 True 而在另一个对象中应该是 False 。我如何实现这一目标?
我在网上阅读了有关 的信息annotate(Count())
,但我认为这会使代码看起来有点幼稚,每个字段都包含所有这些 Count() 。
解决方案
我建议您自定义一个比较两个对象的函数。就像是:
def compare(obj1, obj2):
if (obj1.first_name == obj2.first_name && obj1.last_name == obj2.last_name ...):
return true
return false
即使有比较两个对象的默认方法,我认为它们在您的情况下也不会起作用,因为您专门说要排除主键字段。其余的很简单:您在两个列表之间循环一个双循环并检查两个对象是否相等。喜欢:
for item1 in list1:
for item2 in list2:
if compare(item1, item2):
# ... do something
很天真,但应该工作。
推荐阅读
- laravel - Laravel - 如何在 PHPUnit 测试中使用 faker?
- c++ - 超出列时,clang-format 强制每个参数/参数拥有自己的行?
- python - 使用 go-serial 从 arduino 的串口读取
- email - 从 Erlang 发送邮件 - OTP 应用程序或操作系统应用程序
- java - 查询C3P0开始获取的连接数
- firebase - 在 Firestore 中一次按数组项和其他字段查询
- android - Firestore 嵌套获取使用回调在初始调用时获取空结果
- c# - 使用字符串对象成员名称处理 IQueryable.OrderBy 扩展中的无效输入
- javascript - 我需要根据日期按降序对数组进行排序
- symfony - Symfony 3.4:NumberType 和 MoneyType 正在呈现文本类型的 html 输入而不是数字类型的输入