Python 和 Django Web 应用程序如何删除数据库值而不影响报告

问题描述 投票:0回答:1

我开发了一个网络应用程序,它是一个简单的客户关系管理系统,用于创建估算、服务报告和发票。它包括一个用于跟踪库存的模块。

我发现,如果我从库存中删除某个项目,包含该项目的估算、服务报告和发票将无法加载并导致错误。

有办法解决这个问题吗?我猜它正在引用库存项目的 id,然后找不到详细信息。

如何删除库存项目而不影响现有报告?

存储库存的数据库文件名为db.sqlite3

python django database
1个回答
0
投票

这取决于您删除库存时想要什么行为。我假设您正在模型中使用 Django 的

ForeignKey
字段。

根据Django的文档,删除模型实例时可以有7个主要操作:

  1. CASCADE:级联删除,意味着报告也应该被删除。
  2. PROTECT:防止删除报告,同时引发 ProtectedError 异常。
  3. RESTRICT:与PROTECT类似,但如果您通过CASCADE在同一操作中还删除了不同的对象,则可以将其删除。文档 URL 中给出的示例有帮助。
  4. SET_NULL:报表仍然存在,值变为NULL。
  5. SET_DEFAULT:如果该字段有默认值,则返回它。l
  6. SET:将字段设置为作为参数传递给
    SET
    的值。
  7. DO_NOTHING:什么也没发生。

当您使用

ForeignKey
时,这些是第二个参数,例如:

# in Report model
inventory_item = models.ForeignKey(InventoryItem, models.CASCADE, ...) # using CASCADE as an example
© www.soinside.com 2019 - 2024. All rights reserved.