Python 复制从抽象模型(Django)派生的类的所有字段
我有两个模型Python 复制从抽象模型(Django)派生的类的所有字段,python,django,django-models,Python,Django,Django Models,我有两个模型A和B,它们的结构都是从同一个抽象模型派生出来的: class CommonInfo(models.Model): name = models.CharField(max_length=100) # ... # more fields class Meta: abstract = True class A(CommonInfo): pass class B(CommonInfo): pass 现在有了一个类A的对象,我
A
和B
,它们的结构都是从同一个抽象模型派生出来的:
class CommonInfo(models.Model):
name = models.CharField(max_length=100)
# ... # more fields
class Meta:
abstract = True
class A(CommonInfo):
pass
class B(CommonInfo):
pass
现在有了一个类A
的对象,我想创建一个类B
的对象,具有相同的字段值
Django将一个对象的所有字段复制到另一个对象的正确方法是什么
我知道的唯一方法是枚举一个对象的所有字段(顺便说一句,怎么做?),并将它们存储在另一个对象中。但是有更简单的方法吗?您可以使用
模型来描述(…)
并在构建B
对象时使用此词典,如:
from django.forms.models import model_to_dict
my_b = B(**model_to_dict(
my_a,
fields=[f.name for f in CommonInfo._meta.fields],
))
# some processing
my_b.save()
请注意,如果CommonInfo
包含对象的外键,则将复制这些引用,但不会构造新的引用对象。此外,这将不适用于多对多字段,因此需要排除这些字段(稍后添加相关对象)