我正在为django设计一个问卷模型,这个模型应该由没有编程经验的人来维护,所以我花了很多时间来制作我的模型,以弥补一些次要的细节。现在,我想解锁SQL数据库查询的潜力,以便能够生成有关所提供的响应和反馈的统计信息。
我的问题类型之一是五星级,所以我想收集有关这个问题的统计数据,比如:
理想情况下,我希望将这些统计问题记录在模型中,并创建一个视图来显示所询问的所有统计数据,并保持整个过程的程序化。
这是一个精心设计的模型还是像反馈这样的一组模型,还是已经有一些框架或模块为我处理这些情况?
我的问卷/模型:
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)发布于 2012-11-15 15:37:32
这将满足您的要求:
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')]https://stackoverflow.com/questions/13391954
复制相似问题