Sobes.tech
Junior — Middle

Jaký je účel parametru on_delete v modelech databází?

sobes.tech AI

Odpověď od AI

Parametr on_delete v modelech databází, například v Django ORM, určuje chování při odstranění souvisejícího objektu. Ukazuje, co by mělo být provedeno s objekty, které odkazují na odstraňovaný objekt prostřednictvím cizích klíčů.

Hlavní možnosti on_delete jsou:

  • CASCADE: při odstranění rodičovského objektu jsou odstraněny všechny s ním spojené podřízené objekty.
  • PROTECT: zakazuje odstranění rodičovského objektu, pokud existují s ním spojené podřízené objekty.
  • SET_NULL: nastaví hodnotu cizího klíče na NULL u spojených objektů.
  • SET_DEFAULT: nastaví hodnotu na výchozí u spojených objektů.
  • DO_NOTHING: neprovádí žádné akce, což může vést k chybám integrity dat.

Příklad:

from django.db import models

class Author(models.Model):
    name = models.CharField(max_length=100)

class Book(models.Model):
    author = models.ForeignKey(Author, on_delete=models.CASCADE)
    title = models.CharField(max_length=200)

Zde, pokud je autor odstraněn, všechny knihy tohoto autora budou také odstraněny díky on_delete=models.CASCADE.