django - 在 Django 中,由于第二个(基于 View )模型中的 FK,无法删除模型实例

标签 django delete-row sql-view

我在 Django 中定义了两个模型,第二个模型基于第一个模型,并且不受管理,因为它基于 SQL Server View (而不是表)的后端

class Embedder(models.Model):
  {my_fields...}

class MostRecent(models.Model):
  embedder = models.ForeignKey(Embedder)
  status = models.IntegerField()

  class Meta:
    db_table = 'embedder_most_recent'
    managed = False

问题是由于此错误,我无法删除 Embedder 实例:

View or function 'embedder_most_recent' is not updatable because the modification affects multiple base tables. (4405) (SQLExecDirectW)")

问题似乎出在 Django 中,因为我可以毫无错误地删除 SQL 中的嵌入器行。我该如何解决这个问题?

最佳答案

marcusshep已经发布,Django 文档中有足够的文档说明此行为。

由于 Django ForeignKey 引用另一个 Django 模型对象,任何删除父对象的尝试都意味着 Django 必须找到一种方法来管理引用 ForeignKey 的对象。您应该明确指定此行为。

下面的示例将删除包含 ForeignKey 的对象:

class MostRecent(models.Model):
   embedder = models.ForeignKey(Embedder, on_delete=models.CASCADE)
   status = models.IntegerField()

关于django - 在 Django 中,由于第二个(基于 View )模型中的 FK,无法删除模型实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37285164/

相关文章:

mysql - 使用 MySQL 在创建的 VIEW 中看不到 NULL 值

python - Django 管理员将变量传递给用户和组模板

django - django formset中使用多个选择元素的动态模型选择字段

mysql - 删除yii2中的相关模型

sql - 为什么 SQL Server 优化器不使用 CHECK 约束定义来查找哪个表包含行?

sql - 在 View 中添加虚拟列

python - Django:如果找不到请求的数据,有没有办法从 GET 请求转移到 POST 请求?

python - Django 如何循环对象并在模板中显示变量

r - R 中的高级行删除

python - 从 CSV 中删除空白行?