Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何构造django模型并轻松查询它们?_Django_Django Models_Django Queryset - Fatal编程技术网

如何构造django模型并轻松查询它们?

如何构造django模型并轻松查询它们?,django,django-models,django-queryset,Django,Django Models,Django Queryset,我正在构建一个Django web应用程序,它将统计每天、每周和每年进出学校图书馆的总人数,然后保存到DB 该Web应用程序使用OpenCv控制的摄像头在前端显示实时提要(我已经成功实现了这一点) 我的问题是: 我如何设计和构造模型,以便按天、周、月和年存储每个数据 我如何使用chart.js查询它们以在不同的条形图上显示它们?我以前没有使用过chart.js,但我想我可以回答你问题的第一部分 从我的一个项目中考虑这个模型,用户可以在我的webapp上发布一篇“帖子” class Post(mo

我正在构建一个Django web应用程序,它将统计每天、每周和每年进出学校图书馆的总人数,然后保存到DB

该Web应用程序使用OpenCv控制的摄像头在前端显示实时提要(我已经成功实现了这一点)

我的问题是:

我如何设计和构造模型,以便按天、周、月和年存储每个数据


我如何使用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查询内置的,并暗示[开始时间戳,结束时间戳]包含开始时间和独占结束时间)


现在,您应该能够非常简单地存储数据,并量化在任何时间段内创建了多少人对象!

感谢您的反馈,我已经解决了这个问题。嘿,很高兴听到这个问题!如果我的回答是正确的,您能单击我的回答旁边的复选框,让其他人搜索类似的问题吗在上可以更轻松地找到他们的答案吗?谢谢!谢谢你的反馈,我已经解决了这个问题。嘿,很高兴听到这个消息!如果我的答案是正确的,你可以单击我的答案旁边的复选框,以便其他搜索类似问题的人可以更轻松地找到他们的答案吗?谢谢!