2012-03-25 44 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