【发布时间】:2018-07-06 20:54:04
【问题描述】:
假设我有以下Listing 模型。我检索一个列表并将其存储在old_listing 中,然后设置一个新列表并将其存储在new_listing 中。现在有什么方法可以将new_listing 保存到old_listing 中,基本上覆盖除了自动递增的id 字段之外的所有字段?
class Listing(models.Model):
street = models.CharField(max_length=500)
old_listing = Listing.objects.get(id=1) # Assuming this record already exists
new_listing = Listing(street='123 Main Street')
old_listing.save(new_listing) # This obviously doesn't work
【问题讨论】:
-
你为什么要这样做?
-
@DanielRoseman 因为实际的
Listing模型有很多字段,很多字段需要自定义清理逻辑。这样我就可以避免复制和粘贴许多逻辑。 -
但这似乎与您在问题中描述的相反。你说你想用新对象覆盖 old 对象的所有字段。
-
@DanielRoseman 是的。在添加列表之前,我首先检查是否存在相同列表的旧版本。如果确实存在,那么我需要用新列表更新旧列表。这是我可以在几个选项之间进行选择的地方,例如我在问题中提到的选项,或者像这样的问题中列出的答案 - stackoverflow.com/questions/2712682/django-update-object。如果可能的话,我的方法似乎对我的情况是最简单的。
标签: django