首页 > 解决方案 > 如何从 Django 中的 2 个查询集中获取公共对象?

问题描述

我有 2 个相同模型的查询集(从不同的函数中获得)。现在我想根据一些字段来查看它们中的共同元素,例如: first_name, last_name, date_of_birth, abc_field(boolean field)

它们将具有不同的主键和唯一 ID。它们之间的唯一区别应该是 abc_field 在一个对象中应该是 True 而在另一个对象中应该是 False 。我如何实现这一目标?

我在网上阅读了有关 的信息annotate(Count()),但我认为这会使代码看起来有点幼稚,每个字段都包含所有这些 Count() 。

标签: djangodjango-rest-frameworkdjango-queryset

解决方案


我建议您自定义一个比较两个对象的函数。就像是:

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

很天真,但应该工作。


推荐阅读