如何删除非托管视图模型引用的Django模型

时间:2012-03-25 19:40:21

标签: python django django-models django-orm

我有两个模型,一个是vanilla 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概述了这个问题,但是没有任何一个权宜之计的黑客似乎对我有用,并且这个错误本身被标记为另一个稍微不同但尚未解决的错误的副本......

1 个答案:

答案 0 :(得分:4)

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