您可以在现有对象上保存新对象吗?
Posted
技术标签:
【中文标题】您可以在现有对象上保存新对象吗?【英文标题】:Can you save a new object over an existing object? 【发布时间】: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 是的。在添加列表之前,我首先检查是否存在相同列表的旧版本。如果确实存在,那么我需要用新列表更新旧列表。这是我可以在几个选项之间进行选择的地方,例如我在问题中提到的选项,或者像这样的问题中列出的答案 - ***.com/questions/2712682/django-update-object。如果可能的话,我的方法似乎对我的情况是最简单的。
【参考方案1】:
new_listing.id = old_listing.id
new_listing.save()
这应该可行。
【讨论】:
以上是关于您可以在现有对象上保存新对象吗?的主要内容,如果未能解决你的问题,请参考以下文章