我有这个Django模型:
class Visits(models.Model):
ip = models.GenericIPAddressField()
url = models.CharField(max_length=200)
datetime = models.DateTimeField(auto_now_add=True)
def __unicode__(self):
return "%s : %s (%s)" % (unicode(self.ip),
unicode(self.datetime.strftime('%d/%m/%y %H:%M:%S')),
unicode(self.url))
它包含对我网站的所有访问。例如,这些都是来自DB的值:
<Visits: 127.0.0.1 : 27/11/14 00:00:00 (/)>,
<Visits: 127.0.0.1 : 27/11/14 00:01:00 (/)>,
<Visits: 127.0.0.1 : 27/11/14 00:09:00 (/)>,
<Visits: 127.0.0.1 : 27/11/14 00:45:00 (/)>,
<Visits: 127.0.0.1 : 27/11/14 00:46:00 (/)>
我想编写一个ORM查询,该查询将值分组为15分钟增量。例如,此查询应返回count()==2
(前三个值在第一组中,后两个在第二组中)。我怎么能用Django的ORM来做呢?
答案 0 :(得分:-1)
在这里,我有四次访问,并且我试图通过28岁以下的小型过滤掉。
>>> visits_count = len([ obj for obj in Visits.objects.all() if obj.datetime.strftime('%M') > '28'])
>>> visits_count
2
小于等于28的情况。
>>> visits_count = len([ obj for obj in Visits.objects.all() if obj.datetime.strftime('%M') >= '28'])
>>> visits_count
4