2

私は、プログラミング経験のない人でも維持できるはずの django のアンケート モデルに取り組んでいるので、細かい部分を補うためにモデルを作成するのに多くの時間を費やしてきました.. SQL データベースの可能性を解き放ちたいと思っています。与えられた応答とフィードバックに関する統計を生成できるクエリ。

私の質問タイプの 1 つは 5 つ星評価であるため、次のような質問に関する統計を収集できるようにしたいと考えています。

  • 質問 q に対する 5 つ星 (4 つ星、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)
4

1 に答える 1

0

これはあなたの要件をカバーします:

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')]
于 2012-11-15T15:37:32.910 に答える