如何解决在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 举报,一经查实,本站将立刻删除。