31

I have database created by Django model, where status and id and username are the fields of the table Messages.

I need to count the number of rows where status value= 0 for a particular username.

This is my incomplete code:

Message_me = Messages.objects.get(username='myname')
the Tin Man
  • 158,662
  • 42
  • 215
  • 303
Friend
  • 1,326
  • 11
  • 38
  • 62

3 Answers3

63

Try this code:

Message_me = Messages.objects.filter(username='myname', status=0).count()
Pavel Anossov
  • 60,842
  • 14
  • 151
  • 124
Mikhail Chernykh
  • 2,659
  • 22
  • 15
6

You can either use Python's len() or use the count() method on any queryset depending on your requirements. Also note, using len() will evaluate the queryset so it's always feasible to use the provided count() method.

It can be used as follows:

message_count = models.Messages.objects.filter(username='username', status=0).count()

Alternatively, (if you do not worry about performance) you can also use len():

message_count = len(models.Messages.objects.filter(username='username', status=0))

You should also go through the QuerySet API Documentation for more information.

the Tin Man
  • 158,662
  • 42
  • 215
  • 303
Amyth
  • 32,527
  • 26
  • 93
  • 135
0

To get the count of you can use the Model

// In models.py
class A(models.Model):
    name = models.CharField(max_length=200)

// In views.py
from .models import A
def index(View):
    c = A.objects.filter(username='myname', status=0).count()
    print c // This will give you the count of the rows
Amit
  • 244
  • 1
  • 2
  • 11