在 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')
