【问题标题】:How to delete a Django model referenced by unmanaged view model如何删除非托管视图模型引用的 Django 模型
【发布时间】:2012-03-25 19:40:20
【问题描述】:

我有两个模型,一个是原版 Django 模型,另一个是包装视图的非托管模型。

class A(models.Model):
    name = models.CharField(max_length=255)

class B(models.Model):
    a = models.ForeignKey(A)

    class Meta:
        managed = False
        db_table = 'myview'

一切正常,除非我尝试从 A 中删除一行,这会给我一个错误,例如:

django.db.utils.DatabaseError: cannot delete from view "myview"
HINT:  You need an unconditional ON DELETE DO INSTEAD rule or an INSTEAD OF DELETE trigger.

显然,Django 假设非托管模型是一个表,因此试图删除相关行,并且由于它是一个只读视图,我的 PostgreSQL 后端抛出了这个错误。

有没有办法解决这个问题?

我发现this bug report 概述了该问题,但权宜之计似乎对我不起作用,并且该错误本身被标记为与另一个略有不同但尚未解决的错误的重复...

【问题讨论】:

    标签: python django django-models django-orm


    【解决方案1】:

    您是否尝试过on_delete=models.SET_NULL 作为解决方法?

    【讨论】:

    • 这是一个只读视图,所以我不能将任何内容设置为 null,但 models.DO_NOTHING 有效。谢谢。
    猜你喜欢
    • 2014-07-02
    • 1970-01-01
    • 1970-01-01
    • 2012-10-15
    • 1970-01-01
    • 1970-01-01
    • 2013-09-10
    • 1970-01-01
    • 2021-08-09
    相关资源
    最近更新 更多