Note that there are some explanatory texts on larger screens.

plurals
  1. PODjango aggregate on .extra values
    primarykey
    data
    text
    <p>Model , with abstract base class:</p> <pre><code>class MapObject(models.Model): start_date = models.DateTimeField(default= datetime.strptime('1940-09-01T00:00:00', '%Y-%m-%dT%H:%M:%S')) end_date = models.DateTimeField(default= datetime.strptime('1941-07-01T00:00:00', '%Y-%m-%dT%H:%M:%S')) description = models.TextField(blank=True) location = models.PointField() objects = models.GeoManager() user = models.ForeignKey(User) created = models.DateTimeField(auto_now_add = True) last_modified = models.DateTimeField(auto_now = True) source = models.ForeignKey(Source) address= models.TextField(blank=True, null=True) address_road = models.TextField(blank=True, null=True) class Meta: abstract = True class Bomb(MapObject, BombExtraManager): #Bomb Attributes type = models.CharField(choices= Type_CHOICES, max_length=10) night_bombing = models.BooleanField(blank=True) map_sheet = models.ForeignKey(MapSheet, blank=True, null=True) def __unicode__(self): return self.type </code></pre> <p>Now, I want to get the equivalent result using Django ORM as this query: </p> <pre><code>Select date_part('day',"start_date") as "day", date_part('hour',"start_date") as "hour", Count('id') from "Mapper_bomb" where "source_id" = 1 group by date_part('hour',"start_date"), date_part('day',"start_date") Order by date_part('day',"start_date") ASC, date_part('hour',"start_date") ASC </code></pre> <p>Which would give me a table with the count of bombs per day and hour.</p> <p>Using Django ORM, I have come to the following at the moment (first_day is just a custom manager I defined that returns a subset of the data, same as source_id = 1):</p> <pre><code>Bomb.first_day.extra(select={'date': "date_part(\'day\', \"start_date\")", 'hour': "date_part(\'hour\', \"start_date\")"}).values('date', 'hour').order_by().annotate(Count('date'), Count('hour')) </code></pre> <p>but Django complains FieldError: Cannot resolve keyword 'date' into field. Is there a way using Django ORM to get the desired result or do I need to fallback on raw sql? </p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload