在Django中合并两个模型实例

时间:2013-08-31 13:21:22

标签: django django-models django-orm

我想在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函数的东西

2 个答案:

答案 0 :(得分:3)

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

Django Extensions'merge_model_instances管理命令。

Django Super Deduper

答案 1 :(得分: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()