2012-03-25 13 views
2

2つのモデル、1つはバニラDjangoモデル、もう1つはビューをラップするアンマネージドモデルです。アンマネージドビューモデルによって参照される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を見つけましたが、一時しのぎハックのどれも私のために働くように見えるん、バグ自体は別のわずかに異なる、まだ未解決のバグの重複をマークした...

答えて

3

は、あなたのようにon_delete=models.SET_NULLを試してみました回避策?

+3

これは読み取り専用ビューなので、nullに設定することはできませんが、models.DO_NOTHINGは機能しました。ありがとう。 – Cerin

関連する問題