How to implement the having clause in sqlite django ORM

django, django-models, orm, python, sqlite

Solution

Finally I've managed to figure it out. The ORM syntax is something like this.

from django.db.models.aggregates import Count

JobStatus.objects.filter(
    status='PRF'
).values_list(
    'job', flat=True
).order_by(
    'job'
).annotate(
    count_status=Count('status')
).filter(
    count_status__gt=1
).distinct()

Problem

I've written django sqlite orm syntax to retrieve particular set of records: ``` from django.db.models.aggregates import Count JobStatus.objects.filter( status='PRF' ).values_list( 'job', flat=True ).order_by( 'job' ).aggregate( Count(status)__gt=3 ).distinct() ``` But it gives me an error and the sql equivalent for this syntax works fine for me. This is my sql equivalent. ``` SELECT * FROM tracker_jobstatus WHERE status = 'PRF' GROUP BY job_id HAVING COUNT(status) > 3; ``` and I'm getting the result as follows ``` +----+--------+--------+---------+---------------------+---------+ | id | job_id | status | comment | date_and_time | user_id | +----+--------+--------+---------+---------------------+---------+ | 13 | 3 | PRF | | 2012-11-12 13:16:00 | 1 | | 31 | 4 | PRF | | 2012-11-12 13:48:00 | 1 | +----+--------+--------+---------+---------------------+---------+ ``` I'm unable to find the django sqlite equivalent for this. I will be very grateful if anyone can help.

Original source