2014-06-18 136 views
0

我有兩個模型:adverisement_campaign和advertisement_view(視圖記錄)。每個廣告活動必須每隔X天一次向用戶顯示一次。所以,廣告系列模型有天數的字段。 我需要選擇廣告系列,這個廣告系列尚未向用戶顯示超過此天數的天數。並從此列表中獲取隨機廣告系列以顯示用戶。 因此,我寫了查詢,哪些選擇的廣告系列尚未顯示。按照Django相關模型字段篩選模型ORM

user_campaigns = AdvertShowEvent.objects.filter(user=user) 
             .values('advertisement_id')\ 
             .annotate(datetime_last=Max('datetime'))\ 
             .values_list('advertisement_id') 

但現在我需要過濾廣告展示用戶活動,他已經不超過X天可見較多,每個公司指定。像這樣的東西

user_campaigns = AdvertShowEvent.objects.filter(user=user, **datetime_last__gte=asdvertisement.days_between_shows**) 
             .values('advertisement_id')\ 
             .annotate(datetime_last=Max('datetime'))\ 
             .values_list('advertisement_id') 

我該如何使用Django ORM做這個過濾?

回答

0

事情是應該做的伎倆:

user_campaigns = AdvertShowEvent.objects.filter(user=user, 
**datetime_last__gte=datetime.datetime.now() - datetime.timedelta(days=days_between_shows)) 
             .values('advertisement_id')\ 
             .annotate(datetime_last=Max('datetime'))\ 
             .values_list('advertisement_id')