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 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:
python912author = Author.objects.get(pen_name='Richard Bachman')books_written = author.book_set.all() # get all books written by this author
From Book to Authors:
python912book = 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:
python9123author = Author.objects.get(pen_name='Richard Bachman')book = Book.objects.book.authors.add(author)
Removing an author from a book:
pythonbook.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:
pythonbooks = 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'?
¡Gracias por tus comentarios!
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla