python / intermediate
Snippet
Django Modellbeziehungen mit ForeignKey und ManyToMany
Djangos ORM verwaltet relationale Daten durch modellfelder. ForeignKey erstellt eine Many-to-One-Beziehung (ein Autor hat viele Bücher), während ManyToManyField bidirektionale Many-to-Many-Beziehungen ermöglicht (Autoren können an mehreren Büchern mitarbeiten, und Bücher können mehrere Mitarbeiter haben). Das on_delete=models.CASCADE gewährleistet die referentielle Integrität, indem zugehörige Bücher gelöscht werden, wenn ein Autor gelöscht wird.
snippet.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
from django.db import modelsclass Author(models.Model):name = models.CharField(max_length=100)email = models.EmailField()def __str__(self):return self.nameclass Book(models.Model):title = models.CharField(max_length=200)author = models.ForeignKey(Author, on_delete=models.CASCADE, related_name='books')collaborators = models.ManyToManyField(Author, related_name='collaborated_books', blank=True)published_date = models.DateField()rating = models.DecimalField(max_digits=3, decimal_places=2, default=0.0)def __str__(self):return self.title
django
Erklärung
1
class Author(models.Model):
Definiert das Author-Modell, das von Djangos Model-Basisklasse erbt
2
author = models.ForeignKey(Author, on_delete=models.CASCADE)
Erstellt eine Many-to-One-Beziehung; jedes Buch gehört zu einem Autor
3
collaborators = models.ManyToManyField(Author)
Ermöglicht Many-to-Many-Beziehungen zwischen Buch und Autor für Zusammenarbeit
4
on_delete=models.CASCADE
Wenn der referenzierte Autor gelöscht wird, werden alle zugehörigen Bücher automatisch gelöscht