我有用户护照数据列表。我需要按照与列表中排序的护照数据相同的顺序获取用户查询集。这是包含护照数据的列表:
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])
但还是没成功
你能试试这个吗?
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))