【问题标题】:How Do I Get Django Poll Votes In Percentage Format?我如何获得百分比格式的 Django 投票?
【发布时间】:2022-08-10 03:11:04
【问题描述】:

我使用本教程创建了一个投票应用程序……我一直在扩展它……我已经让它工作了……但我不知道如何将投票转化为百分比。 ..

我试图做类似的事情......

def percentage(self):
     return 100 * (self.votes) / (self.survey)

但这不起作用...

我的模型看起来像...

class Choice(models.Model):
 
    choice = models.TextField(max_length=264,blank=True,null=True,unique=False)
    survey = models.ForeignKey(\"Survey\",on_delete=models.CASCADE,related_name=\"choice_survey\")
    votes = models.IntegerField(default=0)

class Survey(models.Model):
 
    survey_name = models.CharField(max_length=255,blank=True,null=True,unique=False)
    survey_type = models.CharField(choices=STATUS_CHOICES8,blank=True,max_length=300)

我见过annotate 的例子,我也玩过它们。我需要跟踪总票数作为属性吗?我见过的其他例子都是外键。通过获取整数字段,我完全可以得到票数。我似乎无法弄清楚如何将其转换为百分比。

在此先感谢您的任何建议。

标签: python-3.x django django-views django-templates


【解决方案1】:

百分比是特定值的一小部分。在这种情况下,您需要一些东西来比较这个选择的票数与 - 例如,所有选择的所有票数。

假设您有一个非常简单的调查(例如,只有一个选择题),那么您可以通过

def percentage(self):
     total_votes = Choice.objects.filter(survey=self.survey).count()
     return (self.votes / total_votes) * 100

如果您的调查中有很多问题,那么您将需要一个中间模型,例如 Question,以便调查包含许多问题,而它们反过来又有很多选择。然后你可以对我们上面调查的问题做同样的事情。

【讨论】:

    【解决方案2】:

    我能够利用此处记录的解决方案来回答我的问题....

    How do I call a custom method on a model with a template in Django?

    我的最终答案看起来像......

    def percentage(self):
        total = 0.0
        for choice in self.poll.choice_set.all():
            total = total + choice.votes
        return (self.votes/total)*100
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-08
      • 2014-10-11
      • 1970-01-01
      • 2012-02-11
      相关资源
      最近更新 更多