我需要帮助来为SQLite数据库中的项目创建自定义计数器

时间:2019-05-09 12:30:41

标签: django

我是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 :(得分:0)

如果要计算单个值,则应在视图中执行此操作。这根本不是您应该在模板中尝试做的事情。

您的最初尝试几乎在那里。应该是:

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>