Как мне сослаться на «многие» отношения «один ко многим» в Django / Python? - PullRequest
1 голос
/ 02 апреля 2019

Я использую 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. Если у меня есть объект "article" где-то в моем коде, как я могу ссылаться на его объект ArticleStat с наибольшим elapsed_time_in_seconds? Даже делая

article.articlestats

приводит к ошибке, поэтому я даже не знаю, как ссылаться на связанные объекты ArticleStat из моего исходного объекта.

1 Ответ

3 голосов
/ 02 апреля 2019

article.articlestats эквивалентно ArticleStat.objects , это дает вам ссылку на менеджера. Вам нужно написать полное выражение запроса, например article.articlestats.all () или article.articlestats.filter (...) и т. Д.

Чтобы получить то, что вы хотите, просто напишите:

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

Обратите внимание, что это вызовет IndexError, если нет объектов ArticleStat, связанных с предоставленной article

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...