假设我们的Django应用程序中有两个模型:
class Author(models.Model):
name = models.CharField()
class Book(models.Model):
name = models.CharField()
通常,对于多对多的字段,我会创建一个中间表,只查询:
class BookAuthor(models.Model):
book = models.ForeignKey(Book)
author = models.ForeignKey(Author)
从那以后,我可以通过book
或author
查询BookAuthor。
但是,django ManyToManyField
会将其更改为:
class Author(models.Model):
name = models.CharField()
class Book(models.Model):
name = models.CharField()
authors = models.ManyToManyField(Author)
所以现在我可以查询一本书的作者......但是另一种方式 - 作者的书呢?
答案 0 :(得分:3)
您可以像这样获得作者的书籍:
author.book_set.all()
请注意,查询中的默认值不同,您只需使用型号名称:
Author.objects.filter(book__name__startswith="The")
您可以通过在M2M字段上设置related_name
和related_query_name
属性来覆盖这两种默认设置。请参阅documentation。