2016-05-17 22 views
2

nicht löschen Ich definierte in Django zwei Modelle, der zweite basiert auf dem ersten, und wird nicht verwaltet, weil es Back-End auf einem SQL basiert Server-Ansicht (nicht auf einem Tisch)In Django, kann Modellinstanz wegen FK in zweiten (und view-based) Modell

class Embedder(models.Model): 
    {my_fields...} 

class MostRecent(models.Model): 
    embedder = models.ForeignKey(Embedder) 
    status = models.IntegerField() 

    class Meta: 
    db_table = 'embedder_most_recent' 
    managed = False 

Das Problem ist, dass ich nicht eine Instanz von Embedder aufgrund dieses Fehlers löschen:

View or function 'embedder_most_recent' is not updatable because the modification affects multiple base tables. (4405) (SQLExecDirectW)") 

Das Problem in Django zu wohnen scheint, da kann ich Löschen Sie die Embedder-Zeile in SQL ohne Fehler. Wie kann ich das Problem lösen?

+0

Vielen Dank für Ihre Hilfe Jungs:

Das folgende Beispiel wird das Objekt mit dem ForeignKey löschen. – Patrick

Antwort

1

Da marcusshep bereits veröffentlicht, gibt es ausreichende Dokumentation für dieses Verhalten in den Django-Dokumenten.

Da ein Django ForeignKey ein anderes Django-Modellobjekt referenziert, bedeutet jeder Versuch, das übergeordnete Objekt zu löschen, dass Django einen Weg finden muss, Objekte zu verwalten, die auf ForeignKey verweisen. Sie sollten dieses Verhalten explizit angeben.

class MostRecent(models.Model): 
    embedder = models.ForeignKey(Embedder, on_delete=models.CASCADE) 
    status = models.IntegerField()