将django模型实例保存到另一个模型中

我有2个模型从一个抽象模型继承。 我使用一个用于相关数据,另一个用于存档数据。 他们有相同的领域和方法。 我想在模型A上创建post_save信号,因此无论何时创建新记录,都会在模型B中创建一个实例,到目前为止,选项并不十分优雅:

a = A.objects.get(id=1)
b = B()
model_dict = a.__dict__
model_dict.pop('id')
b.__dict__ = model_dict
b.save()

有没有更好的方法来实现这一目标?

注:这些模型包含外键,因此,django.forms下的model_to_dict函数不起作用,因为它仅提供相关对象的标识。


我认为迭代字段列表是更可预测的方式:

a = A.objects.get(id=1)
data = dict([field.name, getattr(a, field.name) for field in a._meta.fields])
b = B(**data)
b.pk = None
b.save()

注意:这不处理ManyToMany关系。 应该手动复制M2M字段。


没有任何需要。 简单地将id设置为None将导致它保存为新的实例。

a = A.objects.get(id=1)
a.id = None
a.save()
链接地址: http://www.djcxy.com/p/54169.html

上一篇: Saving django model instance into another model

下一篇: save signal seemingly triggered only on 2nd save or after