【问题标题】:How to get common objects from 2 querysets in Django?如何从 Django 中的 2 个查询集中获取公共对象?
【发布时间】:2020-07-20 18:35:54
【问题描述】:

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

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

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

【问题讨论】:

    标签: django django-rest-framework django-queryset


    【解决方案1】:

    我建议你自定义一个比较两个对象的函数。比如:

    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
    

    相当幼稚,但应该可以工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-09-05
      • 1970-01-01
      • 2010-11-21
      • 1970-01-01
      • 2016-07-11
      • 1970-01-01
      • 2015-01-28
      相关资源
      最近更新 更多