如何构造django模型并轻松查询它们?
我正在构建一个Django web应用程序,它将统计每天、每周和每年进出学校图书馆的总人数,然后保存到DB 该Web应用程序使用OpenCv控制的摄像头在前端显示实时提要(我已经成功实现了这一点) 我的问题是: 我如何设计和构造模型,以便按天、周、月和年存储每个数据如何构造django模型并轻松查询它们?,django,django-models,django-queryset,Django,Django Models,Django Queryset,我正在构建一个Django web应用程序,它将统计每天、每周和每年进出学校图书馆的总人数,然后保存到DB 该Web应用程序使用OpenCv控制的摄像头在前端显示实时提要(我已经成功实现了这一点) 我的问题是: 我如何设计和构造模型,以便按天、周、月和年存储每个数据 我如何使用chart.js查询它们以在不同的条形图上显示它们?我以前没有使用过chart.js,但我想我可以回答你问题的第一部分 从我的一个项目中考虑这个模型,用户可以在我的webapp上发布一篇“帖子” class Post(mo
我如何使用chart.js查询它们以在不同的条形图上显示它们?我以前没有使用过chart.js,但我想我可以回答你问题的第一部分 从我的一个项目中考虑这个模型,用户可以在我的webapp上发布一篇“帖子”
class Post(models.Model):
slug = models.SlugField(unique=True)
title = models.CharField(max_length=100)
description = models.CharField(max_length=2200)
image = models.ImageField(upload_to=photo_path, blank=False, null=True)
timestamp = models.DateTimeField(auto_now_add=True)
使用“DateTimeField”(或者“DateField”),您可以非常轻松地存储时间戳信息,这些信息可以使用标准的python日期或日期时间对象比较进行过滤。在我的示例中,我存储图像文件和文本信息
对于您的情况,您可以简单地创建一个新的“Person”模型,其中每个人都有一个时间戳(以及您可能想要存储的任何其他信息),然后使用django查询,您可以计算出有多少人与某些datetime参数相匹配
请注意,Django文档()建议:
如果您只想确定集合中的记录数,请不要在查询集上使用len()。使用SQL的SELECT count(*)在数据库级别处理计数要高效得多,Django正是出于这个原因提供了count()方法
我如何处理您的问题的一个例子是:
型号:
class Person(HabitModel):
timestamp = models.DateTimeField(auto_now_add=True)
#whatever extra data you want on each person walking by
@staticmethod
def get_number_of_people(start_timestamp, end_timestamp):
return Person.objects.filter(timestamp__gte=start_timestamp, timestamp__lt=end_timestamp)).count()
(请注意,“u gte”和“u lt”是Django查询内置的,并暗示[开始时间戳,结束时间戳]包含开始时间和独占结束时间)
现在,您应该能够非常简单地存储数据,并量化在任意时间段内创建了多少人对象!我以前没有使用过chart.js,但我想我可以回答您问题的第一部分 从我的一个项目中考虑这个模型,用户可以在我的webapp上发布一篇“帖子”
class Post(models.Model):
slug = models.SlugField(unique=True)
title = models.CharField(max_length=100)
description = models.CharField(max_length=2200)
image = models.ImageField(upload_to=photo_path, blank=False, null=True)
timestamp = models.DateTimeField(auto_now_add=True)
使用“DateTimeField”(或者“DateField”),您可以非常轻松地存储时间戳信息,这些信息可以使用标准的python日期或DateTime对象比较进行过滤
对于您的情况,您可以简单地创建一个新的“Person”模型,其中每个人都有一个时间戳(以及您可能想要存储的任何其他信息),然后使用django查询,您可以计算出有多少人与某些datetime参数相匹配
请注意,Django文档()建议:
如果您只想确定集合中的记录数,请不要在QuerySet上使用len()。使用SQL的SELECT count(*)在数据库级别处理计数要高效得多,Django正是出于这个原因提供了count()方法
我如何处理您的问题的一个例子是:
型号:
class Person(HabitModel):
timestamp = models.DateTimeField(auto_now_add=True)
#whatever extra data you want on each person walking by
@staticmethod
def get_number_of_people(start_timestamp, end_timestamp):
return Person.objects.filter(timestamp__gte=start_timestamp, timestamp__lt=end_timestamp)).count()
(请注意,“u gte”和“u lt”是Django查询内置的,并暗示[开始时间戳,结束时间戳]包含开始时间和独占结束时间)
现在,您应该能够非常简单地存储数据,并量化在任何时间段内创建了多少人对象!感谢您的反馈,我已经解决了这个问题。嘿,很高兴听到这个问题!如果我的回答是正确的,您能单击我的回答旁边的复选框,让其他人搜索类似的问题吗在上可以更轻松地找到他们的答案吗?谢谢!谢谢你的反馈,我已经解决了这个问题。嘿,很高兴听到这个消息!如果我的答案是正确的,你可以单击我的答案旁边的复选框,以便其他搜索类似问题的人可以更轻松地找到他们的答案吗?谢谢!