Мне нужна помощь в создании пользовательского счетчика для элементов в моей базе данных SQLite - PullRequest
0 голосов
/ 09 мая 2019

Я новичок в Python и Django и пытаюсь подсчитать количество элементов (документов) в моей базе данных SQLite по состоянию документа (отменено или не отменено).Я пробовал несколько способов сделать это, но я не могу найти тот, который работает правильно для меня.Я пробовал forloop.counter, .count () и несколько других способов, которые я нашел в Интернете.Все, что я хочу сделать, - это просмотреть базу данных и сказать, сколько отмененных процедур у меня есть в базе данных.Я пытаюсь отобразить результаты на HTML-странице.Спасибо.

models.py

class posts(models.Model):
    OPMnumber = models.CharField(max_length = 30)
    title = models.TextField()
    contacts = models.CharField(max_length = 50)
    dateLastReviewed = models.DateTimeField()
    reviewDue = models.DateTimeField()
    status = models.CharField(max_length = 20)
    assignedTo = models.CharField(max_length = 30)
    comments = models.TextField()

views.py

def opmStatistics(request):
    """
    Return opmStatus page
    """
    entries = posts.objects.all()#[:10] limits the number of entries 
    displayed
    #opm_count = posts.objects.filter(posts.status=='Canceled').count()

    #return render_to_response('opmStatistics.html', {'posts' : 
    opm_count})
    return render_to_response('opmStatistics.html', {'posts' : entries})

Мой HTML-код:

   <tr><td>Current Number of Active Accelerator Operations OPMs: </td>
   <td>
   {% for post in posts %}
   {% if post.status != "Canceled" %}
     {% with OPM_count=forloop.counter %} <!-- how to save final number 
    as variable. -->
        {{OPM_count}} 
      {% endwith %}
    {% endif %}
   {% endfor %}

   </td>
   </tr>
   <br><br>
   <tr><td>Current Number of Canceled Accelerator Operations OPMs: </td>
   <td>
         {% for post in posts %}
         {% if post.status == "Canceled" %}
         {% with OPM_count=forloop.counter %} <!-- how to save final 
         number as variable. this one does not reset to 1, starts where 
         it left off. -->
         {{OPM_count}}
         {% endwith %}
         {% endif %}

         {% endfor %}
         </td>
         </tr>
         </table> 

1 Ответ

0 голосов
/ 10 мая 2019

Если вы хотите посчитать одно значение, то вы должны сделать это в представлении. Это совсем не то, что вы должны пытаться сделать в шаблоне.

Вы были почти там с вашей первоначальной попыткой. Должно быть:

def opmStatistics(request):
    """
    Return opmStatus page
    """
    opm_count = posts.objects.filter(status='Canceled').count()

    return render(request, 'opmStatistics.html', {'count': opm_count})

и тогда шаблон просто:

<tr>
 <td>Current Number of Active Accelerator Operations OPMs: </td>
 <td>{{ count }}</td>
</tr>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...