Страницы

Поиск по вопросам

пятница, 27 декабря 2019 г.

django запрос к БД

#python #django


Нужно сделать следующий запрос к БД:

   SELECT s.id,count(s.id) FROM staff AS s
   JOIN tasks AS t ON t.author_id = s.id
   WHERE status_id IN(1,2) AND date_creation > '2015-01-01'
   GROUP BY s.id;


Как сделать это средствами моделей django?
    


Ответы

Ответ 1



Если модели выглядят примерно так: class Staff(models.Model): # ... class Task(models.Model): staff = models.ForeignKey(Staff) status = models.ForeignKey(Status) date_creation = models.DateField() Тогда: import datetime from django.db.models import Count Staff.objects.filter( task__status_id__in=[1, 2], task__date_creation__gt=datetime.date(2015, 1, 1) ).values('id').annotate(Count('id')) # или annotate(num_tasks=Count('id'))

Комментариев нет:

Отправить комментарий