【问题标题】: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 是的。在添加列表之前,我首先检查是否存在相同列表的旧版本。如果确实存在,那么我需要用新列表更新旧列表。这是我可以在几个选项之间进行选择的地方,例如我在问题中提到的选项,或者像这样的问题中列出的答案 - stackoverflow.com/questions/2712682/django-update-object。如果可能的话,我的方法似乎对我的情况是最简单的。

标签: django


【解决方案1】:
new_listing.id = old_listing.id
new_listing.save()

这应该可行。

【讨论】:

    猜你喜欢
    • 2013-02-03
    • 1970-01-01
    • 2011-10-09
    • 1970-01-01
    • 1970-01-01
    • 2011-11-26
    • 1970-01-01
    • 2023-03-07
    • 2015-05-28
    相关资源
    最近更新 更多