0 Tage Serie
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
python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
from django.db import models
class Author(models.Model):
name = models.CharField(max_length=100)
email = models.EmailField()
def __str__(self):
return self.name
class 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