Как я могу получить проценты? - PullRequest
0 голосов
/ 09 июня 2019

Я пытаюсь получить процент, но я не знаю, как это сделать для моих моделей.Я пытался использовать некоторый код, но я получаю ошибку.Как я могу получить процент за мои модели?

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 голосов
/ 09 июня 2019

python имеет встроенный модуль с именем math module.Использование получит много функций, связанных с математической операцией.

0 голосов
/ 09 июня 2019

Возможно, это не самый лучший способ, но я бы просто сделал расчет в представлении и создал бы новое поле

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, доступное в вашем шаблоне.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...