2012-03-25 6 views
2

Ich habe zwei Modelle, eines ein Vanille Django Modell, ein anderes ein nicht verwaltetes Modell, das eine Ansicht umschließt.So löschen Sie ein Django-Modell, das von nicht verwalteter Ansicht referenziert wird Modell

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' 

Alles funktioniert gut, es sei denn, ich versuche, eine Reihe von A zu löschen, die wie ich einen Fehler gibt: also

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. 

Anscheinend ist Django das nicht verwaltete Modell unter der Annahme, eine Tabelle, und ist Ich versuche, die abhängigen Zeilen zu löschen, und da es eine schreibgeschützte Ansicht ist, wirft mein PostgreSQL-Backend diesen Fehler auf.

Gibt es einen Weg um dies zu umgehen?

fand ich this bug report das Problem umreißen, aber keiner der Notlösung Hacks scheinen für mich zu arbeiten, und der Bug sich ein Duplikat eines anderen etwas anderen noch ungelösten Fehler markiert wurde ...

Antwort

3

haben Sie versucht on_delete=models.SET_NULL als eine Problemumgehung?

+3

Es ist eine schreibgeschützte Ansicht, also kann ich nichts auf null setzen, aber models.DO_NOTHING hat funktioniert. Vielen Dank. – Cerin

Verwandte Themen