Foo.objects.get(pk="foo")
<Foo: test>
在数据库中,我想添加另一个对象,它是上面对象的副本。
假设我的表有一行。我想将第一行对象插入到具有不同主键的另一行中。我该怎么做?
Foo.objects.get(pk="foo")
<Foo: test>
在数据库中,我想添加另一个对象,它是上面对象的副本。
假设我的表有一行。我想将第一行对象插入到具有不同主键的另一行中。我该怎么做?
要克隆具有多重继承级别的模型,即 >= 2,或下面的 ModelC
class ModelA(models.Model):
info1 = models.CharField(max_length=64)
class ModelB(ModelA):
info2 = models.CharField(max_length=64)
class ModelC(ModelB):
info3 = models.CharField(max_length=64)
这个简单的过程对我来说很有效:
foo_obj = Foo.objects.get(pk="foo")
foo_values = foo_obj.__dict__
foo_values.pop('_state')
foo_values.pop('id')
foo_new_obj = Foo(**foo_values)
foo_new_obj.save()
有一个包可以做到这一点,它在Django管理站点内创建了一个UI:https://github.com/RealGeeks/django-modelclone
pip install django-modelclone
试试这个
original_object = Foo.objects.get(pk="foo")
v = vars(original_object)
v.pop("pk")
new_object = Foo(**v)
new_object.save()
OneToOneField
,那么你应该这样做: tmp = Foo.objects.get(pk=1)
tmp.pk = None
tmp.id = None
instance = tmp