我如何获得百分比?

时间:2019-06-09 12:02:04

标签: python django sqlite

我试图获取百分比,但是我不知道如何为我的模型做到这一点。我尝试使用一些代码,但出现错误。如何获得模型的百分比?

models.py

class Choice(models.Model):

    question = models.ForeignKey('Question', models.CASCADE)
    message = models.CharField(max_length=1024)
    ballots = models.IntegerField(null=True, blank =True)

views.py

def ReportList(request, id):

   q = Question.objects.select_related().get(id = id)
   queryset = Choice.objects.filter(question_id=id)

   if not queryset:
       return redirect ('error')
   return render(request, 'polls/report.html', {'queryset': queryset, 'q': q})

html

{% for choice in queryset %}
    <tr>
        <td>{{ choice.message }}</td>
        <td>{{ choice.ballots }}</td>
    </tr>
{% endfor %}

我试图在models.py中使用此代码,但我认为这是一种奇怪的方式:

def get_percentage(self):
        total_count = Choice.objects.annotate(sum('ballots'))
        cnt = Choice.ballots.__float__()
        perc = cnt * 100 / total_count
        return perc

2 个答案:

答案 0 :(得分:0)

这可能不是最好的方法,但是我只是在视图中进行计算并创建一个新字段

queryset = Choice.objects.filter(question_id=id)
total = float(sum(q.ballots for q in queryset)) / 100
for q in queryset:
    q.pct = q.ballots/total

然后,您的模板中将包含pct字段。

答案 1 :(得分:0)

python有一个名为math模块的内置模块。使用将获得许多与数学运算有关的函数。