假设我做了以下查询:
showtimes = ShowTime.objects.filter(
start_date__lte=start,
end_date__gte=end,
movie__slug=movie.slug,
city=city,
visible=1)
现在我希望有一个函数接收queryset object
并根据其他一些属性进一步过滤结果,如下所示:
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)
这样的东西可以用来修改对象吗?还是有不同的方法可以做到这一点?
答案 0 :(得分:3)
您可以根据需要多次过滤showtimes
。我不相信您的语法是正确的,但您可以使用标准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...