2016-06-07 63 views
1

簡單的場景,但無法弄清楚如何爲它查詢:基本的Django查詢

我們有一個Store模型和Transaction模型。 Foreign KeyTransaction模型有關回Store

我想查詢的列表:已完成至少一個交易的那一天只有商店。所有其他商店應排除在外。


Store.objects.filter(transaction__gt=0, transaction__date_created__gt='2016-06-01')

當我試圖前者查詢,我得到了一個長長的清單回:

[<Store: TrialStore>, <Store: TrialStore>, <Store: TrialStore>, ... ] 

它幾乎一樣,如果它的上市店裏每次交易的一個實例。我想要回來的是每個商店的列表,該列表已完成至少一天的交易。

現在,數據庫中只有一個商店,所以我應該只能得到一個結果。

編輯

Store型號:

class Store(models.Model): 
    status = models.IntegerField(choices=status_choices, default=ACTIVE_STATUS) 
    legal_name = models.TextField(verbose_name='Legal Name') 
    mobile_number = PhoneNumberField(blank=True) 
    email_address = models.EmailField(blank=True) 

Transaction型號:

class Transaction(models.Model): 
    store = models.ForeignKey(Store) 
    date_created = models.DateTimeField(auto_now_add=True, verbose_name='Created') 
    status = models.IntegerField(choices=status_choices) 
+0

燦你請示範你的模特? –

+1

新增型號代碼 – qarthandso

回答

2

你應該使用distinct()

Store.objects.filter(transaction__gt=0, 
        transaction__date_created__gt='2016-06-01').distinct() 
0

這個怎麼樣?

Store.objects.filter(
    transaction__gt=0, 
    transaction__date_created__year='2016', 
    transaction__date_created__month='06', 
    transaction__date_created__day='01' 
) 

在您的查詢中,您是在說「給我所有自2016.06.01以來有交易的商店」。隨着我的查詢,「給我,有從今天開始交易的所有門店」

+0

即使我實際上查詢'自2016.06.01'以後,我是否仍然只能得到一個結果?自那時起,只有一家商店進行交易。不是三個。 – qarthandso

1

,就可以把日期時間字段爲date在查詢:

Store.objects.filter(transaction__date_created__date=Date(2016, 1, 1))