我试图获取百分比,但是我不知道如何为我的模型做到这一点。我尝试使用一些代码,但出现错误。如何获得模型的百分比?
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
答案 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模块的内置模块。使用将获得许多与数学运算有关的函数。