我有两个模型,Book和Author。每个作者都有很多书,每本书都有很多作者,所以我在作者和书之间建立了一个ManyToMany关系如下:
class Author(models.Model):
books = models.ManyToManyField(Book, related_name='authors')
class Book(models.Model):
# some fields
我有一些方便的警报ID,我需要将每个图书对象与相关作者联系起来,所以我这样做(假设我有所有这些对象的id):
author = Author.objects.get(pk=id)
book = Book.objects.get(pk=book_id)
author.books.add(book)
logger.debug(author.book_set.all())
我收到错误:
AttributeError: 'Book' object has no attribute 'author_set'.
我遵循django文档中的约定,但它似乎不适合我: https://docs.djangoproject.com/en/1.8/topics/db/examples/many_to_many/
有人可以解释为什么我会遇到这个错误吗?
答案 0 :(得分:3)
由于该字段是
class Author:
books = models.ManyToManyField(Book, related_name='authors')
你应该做
logger.debug(author.books.all())
附加_set
的字段名称是以另一种方式跟踪关系的默认值,例如book.author_set.all()
。但是,您设置了related
名称,因此您将改为使用book.authors.all()
,