假设我进行以下查询:
showtimes = ShowTime.objects.filter(
start_date__lte=start,
end_date__gte=end,
movie__slug=movie.slug,
city=city,
visible=1)
现在我想要一个函数,它接受那个queryset 对象 并根据其他一些属性进一步过滤结果,如下所示:
def is_subtitled_3d(showtimes):
return (
showtimes.language == LANGUAGE_SUBTITLED and
showtimes.type_vip == None and
showtimes.type_3d == 1 and
showtimes.type_gtmax == None and
showtimes.type_xd == None)
类似的东西是否适用于修改对象,或者有不同的方法吗?
请您参考如下方法:
查询集是 lazy and chainable
您可以根据需要多次过滤放映时间。我不相信你的语法是正确的,但你可以使用标准的 filter 来保持过滤查询集
def is_subtitled_3d(showtimes):
return showtimes.filter(
language=LANGUAGE_SUBTITLED,
type_vip__isnull=True,
type_3d=1,
type_gtmax__isnull=True,
type_xd__isnull=True
)
也许如果用户想要对 3d 电影进行过滤,以说明如何组合过滤器,例如:
showtimes = ShowTime.objects.filter(
start_date__lte=start,
end_date__gte=end,
movie__slug=movie.slug,
city=city,
visible=1)
if request.GET.get('is_3d_movie'):
showtimes = showtimes.filter(type_3d=1)
etc...
