首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >django模型统计量的建模

django模型统计量的建模
EN

Stack Overflow用户
提问于 2012-11-15 05:22:52
回答 1查看 1.6K关注 0票数 2

我正在为django设计一个问卷模型,这个模型应该由没有编程经验的人来维护,所以我花了很多时间来制作我的模型,以弥补一些次要的细节。现在,我想解锁SQL数据库查询的潜力,以便能够生成有关所提供的响应和反馈的统计信息。

我的问题类型之一是五星级,所以我想收集有关这个问题的统计数据,比如:

  • 问题Q的回答有多少是5星( 4星、3星等)?
  • 平均评级反应如何?

理想情况下,我希望将这些统计问题记录在模型中,并创建一个视图来显示所询问的所有统计数据,并保持整个过程的程序化。

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

我的问卷/模型:

代码语言:javascript
复制
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)
EN

回答 1

Stack Overflow用户

发布于 2012-11-15 15:37:32

这将满足您的要求:

代码语言:javascript
复制
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')]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13391954

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档