【发布时间】:2022-01-16 13:00:03
【问题描述】:
我的models.py:
class Author(models.Model):
name = models.CharField(max_length=100)
books = models.ManyToManyField(
"Book", related_name="books", blank=True
)
class Book(models.Model):
title = models.CharField(max_length=100)
author = models.ManyToManyField(Author)
在Django admin 中,我首先创建了Author 的实例,但没有为他分配任何Book:
然后我创建了一个新的Book 并将Leo Tolstoy指定为Author:
在 Django shell 中,我可以访问Book 的Author:
>>> Book.objects.filter(title="War and Peace").first().author.first()
<Author: Leo Tolstoy>
但我无法访问Author 的Books:
>>> Author.objects.filter(name="Leo Tolstoy").first().books.all()
<QuerySet []>
这本书也没有在Admin 视图中分配:
我想访问Author 的Books 以及Books
在Author 的Admin 视图中显示。
【问题讨论】:
-
您只需要一个
ManyToManyField。在后台,DJango 在 book 和 author 表之间创建了两个关联表。对一张表的更改不会影响另一张表。
标签: django django-models many-to-many