我正在尝试找出如何计算作者所写书籍的数量。图书模型与作者模型建立了多对多领域。我不知道如何在谷歌上搜索这样的东西,我认为这很简单,但我什至不知道如何开始。
这是精简的代码:
class Author(models.Model):
first_name = models.CharField()
last_name = models.CharField()
def books(self):
"""Return a list of comma separated list of books by the author"""
pass
class Book(models.Model):
title = models.CharField()
authors = models.ManyToManyField(Author)
也许我可以做一个过滤查询来获取特定作者的书籍,但这似乎不是 django 的方式来做到这一点?我也不确定如何将 python 对象而不是文本传递给过滤函数。
谢谢
最佳答案
当你定义一个外键或多位字段时,django 会为你设置一个反向关系,在你的例子中是 book_set
。所以类似:
def books(self):
books = self.book_set.all()
return ', '.join([book.title for book in books])
参见related objects在文档中
关于python - Django:引用已在另一个模型中定义的多域字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8205789/