By continuing to navigate on this website, you accept the use of cookies to serve you more relevant services & content.
For more information and to change the setting of cookies on your computer, please read our Cookie Policy.

Get count, average, min, max values from model field using Django Aggregate

Django queries help to create, retrieve, update and delete objects. But sometimes we need to get summered values from the objects. Then a Simple solution is to use Django aggregate feature Here are simple examples of how to use aggregation.

app/models.py

class company(models.Model):

    name=models.CharField(max_length=20)

    est=models.IntegerField(max_length=4)

class feature(models.Model):

    name=models.CharField(max_length=20)

class device(models.Model):

    name=models.CharField(max_length=20)

    Code=models.IntegerField()

    Company=models.ForeignKey(company)

    features=models.ManyToManyField(feature)

To perform Min Max and Avg on specific column

 

>>> from django.db.models import Avg, Max, Min, Sum
>>> device.objects.all().aggregate(Avg('price'))
    {'price__avg': 12234.0}
>>> device.objects.all().aggregate(Max('price'))
    {'price__max':587961 }
>>> device.objects.all().aggregate(Min('price'))
{'price__min': 01245}

To know the children count of a foreign key field. 

>>> Comp_Devices=company.objects.annotate(no_of_devices=Count('device'))
>>> Comp_Devices[0].no_of_devices
36
>>> Comp_Devices[0].name
u'Micro'
>>> Comp_Devices[1].no_of_devices
1

the same procedure can be followed for ManyToMany field Columns

>>> Dev_features_count = device.objects.annotate(num=Count('features'))

>>> Dev_features_count[0].num

3

>>> Dev_features_count[1].num

2

>>> 

 

You can perform some complex queries like

To know the devices which have more than two features

>>> Dev_features= device.objects.annotate(num=Count('features')).filter(num__gt=2)

>>> Dev_features[0].num

3

>>> 

To Know more about our Django CRM(Customer Relationship Management) Open Source Package. Check Code

    Posted On
  • 25 March 2015
  • By
  • Micropyramid

Need any Help in your Project?Let's Talk

Latest Comments
Related Articles
Setting Up Coveralls for Django Project

Coveraslls will check the code coverage for your test cases. To use coveralls.io your code must be hosted on GitHub or BitBucket.

install coveralls
...

Continue Reading...
Custom Decorators To Check User Roles And Permissions In Django

A decorator is a function that takes another function and returns a newer,prettier version of that function.

To know more about decorators in python see ...

Continue Reading...
Integrate Django-Oscar-Accounts with Django-Oscar

This package uses double-entry bookkeeping where every transaction is recorded twice (once for the source and once for the destination). This ensures the books always ...

Continue Reading...
open source packages

Subscribe To our news letter

Subscribe and Stay Updated about our Webinars, news and articles on Django, Python, Machine Learning, Amazon Web Services, DevOps, Salesforce, ReactJS, AngularJS, React Native.
* We don't provide your email contact details to any third parties