Джанго Аннотации для группы через другую модель - PullRequest
1 голос
/ 05 ноября 2010

Мне трудно понять, как использовать аннотации в Django ORM для группирования по модели.

from django.db import models

class Customer(models.Model):
    name = models.CharField(max_length=255)

class Store(models.Model):
    name = models.CharField(max_length=255)

class Order(models.Model):
    customer = models.ForeignKey(Customer)
    store = models.ForeignKey(Store)
    order_date = models.DateTimeField()

Если мои магазины - Лос-Анджелес, Денвер, Хьюстон и АтлантаКак я могу получить количество клиентов по магазинам, используя последнюю дату заказа?

Los Angeles: 25
Denver: 210
Houston: 400
Atlanta: 6

1 Ответ

0 голосов
/ 05 ноября 2010

Определите поле ManyToMany для либо Customer или Store, указывая на другую модель, с Order в качестве таблицы through. Например:

class Store(models.Model):
    name = models.CharField(max_length=255)
    orders = models.ManyToManyField(Customer, through=Order)

Теперь вы можете сделать:

from django.db.models import Count
Store.objects.annotate(Count("orders__customer"))
...