Django modele, Relacje między modelami - 106:

106. Jakie są 3 Use Case kiedy to indeksy są automatycznie tworzone przez Django? Jakie są inne takie przypadki w Django (w sumie 3)?

Odpowiedź:
  • 1. Dla pola lub pól primary_key
  • 2. W przypadku parametru 'unique=True'
  • 3. Dla pola ForeignKey()

  • # 4. Dla pól z opcją unique_together lub constraints
    class Membership(models.Model):
        person = models.ForeignKey(User, on_delete=models.CASCADE)
        group = models.ForeignKey(Group, on_delete=models.CASCADE)
    
        class Meta:
            unique_together = ('person', 'group')
    
    # 5. Dla funkcjonalności 'unique_for_date'
    class Post(models.Model):
        slug = models.SlugField(unique_for_date="publish")
        publish = models.DateTimeField()
    
    # 6. Dla kluczy obcych w tabelach pośrednich:
    class Book(models.Model):
        authors = models.ManyToManyField(Author)
    # Django tworzy automatycznie tabelę pośrednią book_authors i dodaje indeksy na kolumnach book_id oraz author_id.