在Django ORM中按相关模型字段过滤模型

时间:2014-06-18 04:15:56

标签: mysql django

我有两个模型:adverisement_campaign和advertisement_view(视图日志)。必须每隔X天一次向用户显示每个广告活动。因此,广告系列模型具有天数字段。 我需要选择未向用户显示此广告系列的天数的广告系列。并从此列表中获取随机广告系列以显示用户。 所以,我写的查询,选择广告系列,尚未见过。

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进行过滤?

1 个答案:

答案 0 :(得分: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')