Skip to main content
 首页 » 编程设计

python之如何在 Django 中查询最大值到最小值

2024年08月22日29xing901022

我想查询主题中从最大条目到最小条目的顺序。这样:

模型.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')