2012-03-25 29 views
2

我有两个模型,一个是香草Django模型,另一个是包装视图的非托管模型。如何删除非托管视图模型引用的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概述了问题,但没有一个权宜之计黑客似乎为我工作,并修正它的特点是另一种略有不同的尚未解决的bug的副本...

回答

3

你试过on_delete=models.SET_NULL为解决方法?

+3

这是一个只读视图,所以我不能设置任何东西为null,但models.DO_NOTHING工作。谢谢。 – Cerin 2012-03-25 20:17:14