创建或增加现有实例的 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 实例?

如何创建一个不允许重复实例的类(在可能的情况下返回现有实例)?

从现有系数创建 sklearn.linear_model.LogisticRegression 实例

如何删除 SQL Server 故障转移群集实例

PHP基于父类的现有实例创建子类的新实例

能否向编译后得到的类中增加实例变量?能否向运行时创建的类中添加实例变量?为什么