python - Django:引用已在另一个模型中定义的多域字段

标签 python django models

我正在尝试找出如何计算作者所写书籍的数量。图书模型与作者模型建立了多对多领域。我不知道如何在谷歌上搜索这样的东西,我认为这很简单,但我什至不知道如何开始。

这是精简的代码:

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/

相关文章:

ruby-on-rails - rails 4 : organize rails models in sub path without namespacing models?

python - 类型错误 : expected a character buffer object using . 翻译

html - 无法使用 django allauth 显示电子邮件字段

regex - Django URLS,使用 ?在网址中

python - Django 模型与用户模型的关系

numpy - 从 txt 文件计算平均值、标准差的有效方法

python - 从具有不同长度的列表生成数据框

python - 为什么 requests.get() 不能在 for 循环中工作?

python - 列表理解 : Contains This and not That (Python)

cakephp - 某个功能应该放在哪里——模型或 Controller ?蛋糕PHP