Skip to main content
 首页 » 编程设计

python之如何对 Django 应用程序中的访问次数进行排序

2024年09月03日28tintown

在 Django (1.0.2) 中,我有 2 个模型:Lesson 和 StatLesson。

class Lesson(models.Model): 
    contents = models.TextField() 
    def get_visits(self): 
        return self.statlesson_set.all().count() 
 
class StatLesson(models.Model): 
    lesson = models.ForeignKey(Lesson) 
    datetime = models.DateTimeField(default=datetime.datetime.now()) 

每个 StatLesson 记录 1 次访问某个类(class)。我可以使用 lesson.get_visits() 来获取该类(class)的访问次数。

如何获得按访问次数排序的类(class)查询集?我正在寻找这样的东西:Lesson.objects.all().order_by('statlesson__count')(但这显然不起作用)

请您参考如下方法:

Django 1.1 将获得聚合支持。

在 Django 1.0.x 上,您可以使用额外的字段自动计数:

class Lesson(models.Model): 
    contents = models.TextField() 
    visit_count = models.IntegerField(default=0) 
 
class StatLesson(models.Model): 
    lesson = models.ForeignKey(Lesson) 
    datetime = models.DateTimeField(default=datetime.datetime.now()) 
 
    def save(self, *args, **kwargs): 
        if self.pk is None: 
            self.lesson.visit_count += 1 
            self.lesson.save() 
        super(StatLesson, self).save(*args, **kwargs) 

然后你可以这样查询:

Lesson.objects.all().order_by('visit_count')