假设我在QuerySet中有一个电影ID列表,格式如下:
movie_ids = [12,4,9,16]
现在,我想拉出相应电影的列表。我还想尽量减少查询次数。所以我做了以下几点:
movies = Movie.objects.filter(pk__in=movie_ids)
然而,这个查询不能保证电影的对应电影对象的顺序与movie_ids中的相同,是吗?无论如何都要保证顺序(以便每个movie_id对应正确的电影)所以我可以做两件事将两个列表配对到一个字典中:
id_movies = dict(zip(movie_ids, movies))
然后将在我的Django模板中使用。
答案 0 :(得分:2)
你可以使用像
这样的字典# Create the dict for the movies object.
id_movies = dict([(m.id, m) for m in movies])
# Get the data in order.
order_movies = [id_movies[i] for i in movie_ids]
这样你就可以按照你给出的顺序得到对象。