Contenu du cours
Django ORM Ninja: Advanced Techniques for Developers
Django ORM Ninja: Advanced Techniques for Developers
Many-to-Many
A Many-to-Many relationship occurs when each record in a model can be associated with many records in another model, and vice versa. This is facilitated by Django's models.ManyToManyField
.
Let's explore the ManyToManyField with an example. In our project, we use two models: Author and Book. An author can write multiple books, and a book might be co-authored by multiple authors. This is a classic many-to-many relationship.
Let's implement it in our code. In the models.py add to the Book model a new field.
Accessing Related Records
From Author to Books:
author = Author.objects.get(pen_name="Richard Bachman")
books_written = author.book_set.all() # get all books written by this author
From Book to Authors:
book = Book.objects.get(title="Black House")
authors_of_book = book.authors.all() # get all authors of this book
Adding and Removing Relationships
Adding an author to a book:
author = Author.objects.get(pen_name="Richard Bachman")
book = Book.objects.
book.authors.add(author)
Removing an author from a book:
book.authors.remove(author)
Filtering with ManyToManyField
You can also filter queries based on Many-to-Many relationships. For example, to find all books co-authored by a specific author:
books = Book.objects.filter(authors__pen_name="Richard Bachman")
1. How can you access all books written by an author named 'Richard Bachman'?
2. What Django query is used to add an author to a book?
3. How can you find all books co-authored by 'Richard Bachman'?
Merci pour vos commentaires !