创建或增加现有实例的 UpdateView
Posted
技术标签:
【中文标题】创建或增加现有实例的 UpdateView【英文标题】:UpdateView that creates or increments existing instance 【发布时间】:2021-07-03 14:04:48 【问题描述】:我有一个模型可以跟踪以特定价值“购买”了多少物品。 例如,可以将物品视为股票,将价值视为购买时的价格。
class Inventory(models.Model):
item = models.ForeignKey(Item, on_delete=models.CASCADE)
quantity = models.PositiveIntegerField()
value = models.PositiveIntegerField()
class Meta:
db_table = 'app_version'
constraints = [
models.UniqueConstraint(fields=['item', 'value'], name='unique valued items')
]
现在,我正在尝试编写一个基于类的Create/UpdateView
,其中一个简单地声明以什么价格购买了哪些商品。然后,视图应该创建一个新实例或增加现有实例的数量。
我已经发现UpdateView
可能是最好的开始,因为我可以覆盖get_object
方法来获得这种“创建或更新”行为。
但是,我不确定如何进行递增。
也许我也完全走错了路,我在这里缺少一个更简单的解决方案。 如果能就如何解决这个问题获得一些想法和意见,那就太好了。
非常感谢!
【问题讨论】:
【参考方案1】:只需使用get_or_update 方法。它允许您知道它是新实例还是来自 db。但是如果你想创建一个api,使用django rest framework是更好的方法。它附带了许多用于快速创建 api 的内置工具。
【讨论】:
以上是关于创建或增加现有实例的 UpdateView的主要内容,如果未能解决你的问题,请参考以下文章
如何在终止时使用现有 EC2 实例映像创建新的 EC2 实例?
如何创建一个不允许重复实例的类(在可能的情况下返回现有实例)?