2010-11-05 63 views
1

我很難找出如何在Django ORM中使用批註來實現模型分組。Django批註通過另一個模型

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 

回答

0

定義上CustomerStore一個多對多字段,指向其他模式,以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")) 
+0

,這如何保證它的唯一多數民衆贊成用於查詢最新order_date的? – RyanBrady 2010-11-05 16:04:14

+0

latest'order_date'意味着一個訂單 - 這是你的意思嗎? – 2010-11-05 16:34:58

+0

是的..我只想計算最新的訂單。如果你上週在休斯頓和休斯頓購物,我只想計算你的休斯頓。 – RyanBrady 2010-11-05 17:17:33

相關問題