您可以在现有对象上保存新对象吗?

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()

这应该可行。

【讨论】:

以上是关于您可以在现有对象上保存新对象吗?的主要内容,如果未能解决你的问题,请参考以下文章

我可以在SQL Server数据库中保存“对象”吗?

我可以在 SQL Server 数据库中保存“对象”吗?

如何将新数据保存到现有单元格?

如何在保存之前查询 CloudCode 中的对象?

您可以将旧版本的 xml 反序列化为更新的结构吗

我们可以保存一个特定的 NSManagedObject 吗?