Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.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_Dynamically Generated_Django Statistics - Fatal编程技术网

django模型统计建模

django模型统计建模,django,django-models,dynamically-generated,django-statistics,Django,Django Models,Dynamically Generated,Django Statistics,我正在为django开发一个问卷模型,该模型应该可以由没有编程经验的人维护,因此我花了很多时间来构建模型,以弥补一些小细节。。现在,我想挖掘SQL数据库查询的潜力,以便能够生成有关给定响应和反馈的统计信息 我的问题类型之一是五星评级,因此我希望能够收集有关该问题的统计数据,如: 问题q有多少回答是五星(、四星、3星等) 平均评级反应是什么 理想情况下,我希望将这些统计问题记录在一个模型中,并创建一个视图,该视图显示所有要求的统计数据,并使整个过程保持程序化 这应该是一个精心设计的模型还是一组

我正在为django开发一个问卷模型,该模型应该可以由没有编程经验的人维护,因此我花了很多时间来构建模型,以弥补一些小细节。。现在,我想挖掘SQL数据库查询的潜力,以便能够生成有关给定响应和反馈的统计信息

我的问题类型之一是五星评级,因此我希望能够收集有关该问题的统计数据,如:

  • 问题q有多少回答是五星(、四星、3星等)
  • 平均评级反应是什么
理想情况下,我希望将这些统计问题记录在一个模型中,并创建一个视图,该视图显示所有要求的统计数据,并使整个过程保持程序化

这应该是一个精心设计的模型还是一组像反馈这样的模型,还是已经有一些框架或模块为我处理这些情况

我的调查问卷/models.py:

class QuestionType(models.Model):
    name = models.CharField(max_length=256, blank=True, default="")

class Question(models.Model):
    text = models.TextField()
    type = models.ForeignKey(QuestionType)

class Response(models.Model):
    question = models.ForeignKey(Question)
    answer = models.TextField()

class Feedback(models.Model):
    user = models.ForeignKey(User)
    responses = models.ManyToManyField(Response)
    response_time = models.DateTimeField(auto_now_add=True)

这将满足您的要求:

class QuestionType(models.Model):
    name = models.CharField(max_length=256, blank=True, default="")

class Question(models.Model):
    text = models.TextField()
    type = models.ForeignKey(QuestionType)

    def how_many_ratings_where_x_stars(self, stars):
        return self.rating_set.filter(stars=stars).count()

    def average_rating(self, stars):
        return self.rating_set.aggregate(models.Avg('stars'))['stars__avg']

class Response(models.Model):
    question = models.ForeignKey(Question)
    answer = models.TextField()
    user = models.ForeignKey(User)
    timestamp = models.DateTimeField(auto_now_add=True)

class Rating(models.Model):
    question = models.ForeignKey(Question)
    stars = models.PositiveIntegerField(min_value=1, max_value=5)
    user = models.ForeignKey(User)
    timestamp = models.DateTimeField(auto_now_add=True)

    class Meta:
        unique_together = [('question', 'user')]

有没有具体的原因让你像这样把
反馈
回复
分开?对于许多问题,我能给出一个答案吗?我将反馈和回答分开,因为模型的其他部分已经被删除,以保留这个问题中的“重要内容”。对于“选择”问题或评级问题,一个回答可以作为一组答案的两倍。。例如,一个问题“你如何评价…”将有5个可能的回答(并且只有5个)1星、2星等。“单选”和“多选”问题也将有一组特定的回答。这个问题不是关于如何修改这些模型,而是关于如何对我想从这些模型中收集的统计数据建模。正如我前面所说的,模型只是为了显示我正在处理的内容,但不需要更改,我想知道是什么(模型或其他方式)我应该做些什么来收集关于这个模型的统计数据。。例如:有多少人对(问题…)回答“是”或“否”,对(…)的平均评分是多少,等等。