gpt4 book ai didi

Django 多对一/一对多关系

转载 作者:行者123 更新时间:2023-12-02 06:22:38 25 4
gpt4 key购买 nike

我有两个模型:Book 和 Author。每个Author有很多本书,每本书有很多作者,所以我在Author和Book之间建立了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/

有人可以解释一下为什么我可能会遇到此错误吗?

最佳答案

由于该字段是

class Author:
books = models.ManyToManyField(Book, related_name='authors')

你应该这样做

logger.debug(author.books.all())

附加 _set 的字段名称是按照其他方式遵循关系的默认值,例如book.author_set.all()。但是,您已经设置了相关名称,因此您可以使用book.authors.all()

关于Django 多对一/一对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34009193/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com