【问题标题】:How do I reference the "many" of "one-to-many" relationships in Django/Python?如何在 Django/Python 中引用“一对多”关系的“多”?
【发布时间】:2019-04-02 17:23:51
【问题描述】:

我正在使用 Python 3.7 和 Django。我有以下两种型号...

class Article(models.Model):
    title = models.TextField(default='', null=False)



class ArticleStat(models.Model):
    article = models.ForeignKey(Article, on_delete=models.CASCADE, related_name='articlestats')
    elapsed_time_in_seconds = models.IntegerField(default=0, null=False)
...
    class Meta:
       unique_together = ('article', "elapsed_time_in_seconds",)

请注意,一篇文章有​​多个 ArticleStat 对象。如果我的代码中某处有一个“文章”对象,我如何以最大的 elapsed_time_in_seconds 引用它的 ArticleStat 对象?甚至在做

article.articlestats

导致错误,所以我什至不知道如何从我的初始对象中引用相关的 ArticleStat 对象。

【问题讨论】:

  • 你能发布确切的错误吗?
  • article.articlestatsRelatedManager,而不是查询集。对于相关管理器上的普通模型,您可以调用与 objects 上几乎相同的方法。例如。 all()filter()count()exists()first() 等...:article.articlestats.all() 为您提供包含所有相关对象的查询集,article.articlestats.first() 只是第一个对象(如果没有,则为 None一个)。

标签: python django python-3.x foreign-keys one-to-many


【解决方案1】:

article.articlestats 相当于ArticleStat.objects,它为您提供了对经理的引用。您需要编写一个完整的查询表达式,例如 article.articlestats.all()article.articlestats.filter(...) 等。

要得到你想要的,只需写:

article.articlestats.all().order_by('-elapsed_time_in_seconds')[0]

请注意,如果没有与提供的 article

相关的 ArticleStat 对象,这将引发 IndexError

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-10
    • 2015-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-19
    • 1970-01-01
    相关资源
    最近更新 更多