python Was macht on_delete bei Django-Modellen?


1 Answers

Mit der Methode on_delete wird Django on_delete , was mit Modellinstanzen on_delete soll, die von der zu on_delete Modellinstanz abhängig sind. (zB eine ForeignKey Beziehung). Das on_delete=models.CASCADE teilt Django mit, den on_delete=models.CASCADE zu kaskadieren, dh die abhängigen Modelle werden ebenfalls gelöscht.

Hier ist ein konkreteres Beispiel. Angenommen, Sie haben ein ForeignKey , das ein ForeignKey in einem ForeignKey . Wenn Sie nun eine Instanz des Author löschen, würde Django nicht wissen, was mit Instanzen des Book geschehen soll, die von dieser Instanz des Author abhängen. Die Methode on_delete teilt Django mit, was in diesem Fall zu tun ist. Einstellung on_delete=models.CASCADE weist Django an, den on_delete=models.CASCADE zu kaskadieren, dh alle Instanzen des on_delete=models.CASCADE zu löschen, die von der Author Modellinstanz abhängen, die Sie gelöscht haben.

Hinweis: on_delete wird zu einem erforderlichen Argument in Django 2.0. In älteren Versionen wird standardmäßig CASCADE .

Hier ist die gesamte offizielle Dokumentation.

python django django-models

Ich bin ziemlich vertraut mit Django, aber kürzlich bemerkte ich, dass es eine Option on_delete=models.CASCADE mit den Modellen gibt, ich habe nach der Dokumentation für das gleiche gesucht, konnte aber nichts mehr finden als,

In Django 1.9 geändert:

on_delete kann jetzt als zweites positionales Argument verwendet werden (zuvor wurde es normalerweise nur als Schlüsselwortargument übergeben). Es wird ein benötigtes Argument in Django 2.0 sein.

Ein Beispiel für die Verwendung ist

from django.db import models

class Car(models.Model):
    manufacturer = models.ForeignKey(
        'Manufacturer',
        on_delete=models.CASCADE,
    )
    # ...

class Manufacturer(models.Model):
    # ...
    pass

Was macht on_delete? ( Erraten Sie die Aktionen, die ausgeführt werden sollen, wenn das Modell gelöscht wird. )

Was macht models.CASCADE? ( irgendwelche Hinweise in der Dokumentation )

Welche anderen Optionen sind verfügbar ( wenn meine Schätzung richtig ist )?

Wo liegt die Dokumentation?



Related