微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Django中获取外键的所有外键

如何解决在Django中获取外键的所有外键

例如,

如果模型Bookshelf的外部键为Books可以访问的模型bookshelf.books,而Book模型的外部键为Author(可通过book.authors访问),我如何从书架上获得所有作者?

示例模型。py

class Bookshelf(models.Model):
    pass

class Book(models.Model):
    bookshelf = models.ForeignKey(Bookshelf,related_name='books',on_delete=models.CASCADE)

class Author(models.Model):
    book = models.ForeignKey(Book,related_name='authors',on_delete=models.CASCADE)

我可以做到:

author_qs = QuerySet(Author)
for book in my_bookshelf.books.all():
    author_qs |= book.authors.all()

但是我怀疑这是非常有效的。

我们非常感谢您的帮助。 (如果有关系,我正在使用Postgres)

解决方法

要跨越一个关系,请在各个模型之间使用相关字段的字段名称,并用双下划线分隔,直到找到所需的字段为止。”-django-docs

因此您可以这样做:

queryset = Author.objects.filter(book__bookshelf=bookshelf)
,

我相信可以在此答案中找到解决方案: https://stackoverflow.com/a/37515546/14349691

上面的答案也很详细。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。