按特定顺序获取模型实例时出现问题

问题描述 投票:0回答:1

我有用户护照数据列表。我需要按照与列表中排序的护照数据相同的顺序获取用户查询集。这是包含护照数据的列表:

lst = ['AA1111111', 'AD2222222', 'AA3333333', 'AA4444444', 'АВ5555555']

我尝试做这样的事情:

empty_queryset = Users.objects.none()
for passport_number in lst:
    user = Users.objects.filter(passport_number__exact=passport_number)
    empty_queryset |= user

我期待着这个:

<QuerySet [<Users: AA1111111>, <Users: AD2222222>, <Users: AA3333333>, <Users: AA4444444>, <Users: АВ5555555>]>

但是顺序很混乱:

<QuerySet [<Users: АВ5555555>, <Users: AA1111111>, <Users: AD2222222>, <Users: AA3333333>, <Users: AA4444444>]>

然后我尝试了这个:

Users.objects.filter(passport_number__in=[i for i in lst])

但还是没成功

python django django-orm django-filter
1个回答
0
投票

你能试试这个吗?

from yourapp.models import User

lst = ['AA1111111', 'AD2222222', 'AA3333333', 'AA4444444', 'АВ5555555']

users_queryset = User.objects.filter(passport_number__in=lst)

users_list = sorted(users_queryset, key=lambda x:lst.index(x.passport_number))
© www.soinside.com 2019 - 2024. All rights reserved.