我想查询主题中从最大条目到最小条目的顺序。这样:
模型.py
class Topic(models.Model):
title = models.CharField(max_length=140, unique=True, verbose_name=_("Title"))
created_at = models.DateTimeField(auto_now=True, verbose_name=_("Created at"))
其他型号是:
class Entry(models.Model):
topic = models.ForeignKey(Topic, verbose_name=_("Topic"))
content = models.TextField(verbose_name=_("Content"))
created_at = models.DateTimeField(auto_now=True,verbose_name=_("Created at"))
首先,我只想从 Topic.py 中过滤今天的条目。那是对的吗? :
def get_topic_today(self):
return self.filter(date=datetime.date.today()).order_by('title')
而且我还想查询热门话题的最大值到最小值。我认为我们可以将 select_related 与从入口到主题模型的反向外键一起使用。但我做不到。例如,条目数最多的主题必须是第一个,然后是最低的。
请您参考如下方法:
如果要将 DateTimeField 过滤到特定日期,可以使用 __day lookup .
def get_topic_today(self):
return self.filter(created_at__day=datetime.date.today()).order_by('title')
要获取相关模型的计数,请使用 Count annotation ,然后对其进行降序排序:
Topic.objects.annotate(entry_count=Count('entry')).order_by('-entry_count')
