在Django中合并两个模型实例

问题描述 投票:2回答:2

我想在Django中合并两个模型实例。例如,我有:

person1:
    id=1
    created=(some date)
    name=None
    last_name=none

person2:
    id=None
    created=None
    name=John
    last_name=Daw

结果应该是:

result:
    id=1
    created=(some date)
    name=John
    last_name=Daw

现在我在__dict__属性中迭代,但也许有人知道更好的方法。我寻找类似jQuery.extend函数的东西

django django-models django-orm
2个回答
2
投票

您是否尝试过这种方式,首先在person2中找出那些非空的值:

person2_dict = {k: v for k, v in person2.__dict__.iteritems() if v is not None}

将它们合并到目标person1中:

person1.__dict__.update(person2_dict)
person1.save()

3
投票

两个第三方库可以帮助重复删除Django模型:

Django Extensions的merge_model_instances管理命令。

Django Super Deduper

© www.soinside.com 2019 - 2024. All rights reserved.