2014-06-18 37 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')