0

在查詢集中,我想返回一個集合(由pk)和所有狀態爲'ACTIVE'的Sales對象。在Django查詢集中篩選子行

我曾嘗試:

Collection.objects.filter(Sales__status="ACTIVE") 

但我回來了所有銷售對象的集合對象,如果銷售對象之一匹配具有「積極」

狀態的標準,而不是隻是那些

所以,我有2種型號(和參考模型)

class Collection(models.Model): 
    ID = models.AutoField(primary_key=True) 
    collection_title = models.CharField(max_length=255) 

class Sales(models.Model): 
    ID = models.AutoField(primary_key=True) 
    sales_title = models.CharField(max_length=255) 

class CollectionSales(models.Model): 
    COLLECTIONSALES_STATUS_LIST = (
     ('ACTIVE', 'Active'), 
     ('REJECT', 'Reject'), 
    ) 
    collection = models.ForeignKey('Collection') 
    sales = models.ForeignKey('Sales') 
    status = models.CharField(max_length=10, choices=COLLECTIONSALES_STATUS_LIST, default="ACTIVE") 
    class Meta: 
     db_table = "myschema_collection_sales" 
     managed=False 

編輯: 我試圖融入REST架構這使鄰輸出將是:

{ 
"count": 2, 
"next": null, 
"previous": null, 
"results": [ 
    { 
     "ID": "1", 
     "collection_title": "My Collection 1", 
     "Sales": [ 
       { 
       "ID": 12, 
       "sales_title": "my sales title 12", 
       "status": "ACTIVE" 
       } 
     ] 
    } 
    , 
    { 
     "ID": "2", 
     "collection_title": "My Collection 2", 
     "Sales": [ 
       { 
       "ID": 4, 
       "sales_title": "my sales title 4", 
       "status": "ACTIVE" 
       }, 
       { 
       "ID": 5, 
       "sales_title": "my sales title 5", 
       "status": "ACTIVE" 
       } 
     ] 
    } 
] 
} 
+0

我認爲你的查詢是Collection.objects.filter(sales__status =「ACTIVE」)?它自然地返回所有具有活躍銷售的集合。 – RickyA 2013-03-26 15:48:43

+0

你究竟想要什麼?積極出售的藏品?積極銷售的CollectionSales? – RickyA 2013-03-26 15:49:51

+0

我希望查詢返回集合對象以及所有「ACTIVE」銷售 – HungryArthur 2013-03-26 15:53:43

回答

0

你必須自己建立數據結構。你想要的是基本上兩個查詢,你不能在一次調用中獲取。

data = {"collection":None, "sales":[]} 
for coll in Collection.objects.filter(sales__status="ACTIVE"): 
    data["collection"] = coll 
    for collsales in coll.collectionsales_set.filter(status="ACTIVE") 
     data["sales"].append(collsales.collection) 
+0

好的,謝謝你的回答RickyA。我會看看並相應更新。 – HungryArthur 2013-03-26 16:12:46

+0

問題是我正在嘗試與rest-framework一起使用它。我發現這個問題,但不知道如何適應它我的情況(如果它可以適應):[link](http://stackoverflow.com/questions/13471083/how-to-extend-model-on -serializer-level-with-django-rest-framework) – HungryArthur 2013-03-26 16:24:02

+0

是的,那是一種痛苦。我與tastypie有類似的問題。訣竅是不要使用綁定到模型的處理程序,而是使用更多通用的處理程序,從而允許您編寫自定義代碼。也許[這](http://django-rest-framework.org/api-guide/views.html)適合你? – RickyA 2013-03-26 16:33:01