我有一个用户 ID 列表,我想检查每个可用的用户 ID,如果不是,我想获取不可用的以下 ID
Posted
技术标签:
【中文标题】我有一个用户 ID 列表,我想检查每个可用的用户 ID,如果不是,我想获取不可用的以下 ID【英文标题】:I have a list of users id , i want to check every userid available or not, if not i want to get the follwing id which is not available 【发布时间】:2020-01-27 06:29:14 【问题描述】:这是我尝试过的代码
staffids = [1,2,4,5,6,7]
# up_obj = UserProfile.objects.filter(userId__in = staffids) #i will explain it below
flag=0
unknown = []
for x in staffids:
up_obj = UserProfile.objects.filter(userId=x)
if up_obj.exists():
print(up_obj)
else:
flag=1
unknown.append(
"id": x
)
if flag == 1:
return Response(
STATUS:False,
MESSAGE:"User not found",
DATA:unknown
)
此代码仅返回可用用户
up_obj = UserProfile.objects.filter(userId__in = staffids)
假设如果用户标识 3,4 不可用,则此代码返回没有 3,4 的查询集。
如果所有 id 都不存在,我想返回一条消息,指出以下 id 不可用或其他...,我已经尝试过,但我正在寻找更好的方法来做到这一点
django 有内置方法吗?
【问题讨论】:
您能否更简洁地说明您在寻找什么? 好的,假设我有一个用户 ID 列表,比如 1,2,3,4,5 。我想要的是表中是否所有 id 都可用,如果表中没有某些 id,我想找回这些 id,我必须做更多的事情 @Jasir 在下面看到我的回答,你得到的正是你所描述的。 【参考方案1】:您可以通过单个查询来获取通过UserProfile
可用的所有userId
字段,而不是对staffids
中的每个条目进行查询:
all_user_ids = list(UserProfile.objects.all().values_list('userId', flat=True))
然后您可以轻松找到两个列表之间的差异,为您提供缺少哪些 id 的信息。
这样,您可以打印出究竟缺少哪些信息,或者您想对这些信息做什么。
staffids = [1, 2, 3, 4, 5, 6, 7]
qs = UserProfile.objects.all()
all_user_ids = list(qs.values_list('userId', flat=True))
if not all_user_ids:
# do something ...
else:
missing_ids = list(set(staffids) - set(all_user_ids))
# do something ...
for obj in qs:
print(obj)
【讨论】:
实际上我已经这样做了,但在我的情况下需要迭代以获得更多细节。 @Jasir 我编辑了答案。我唯一能看到你需要现有模型的地方是print(up_obj)
。您也可以在此处执行此操作。
@Jasir 你的问题解决了吗?如果有,请consider marking the answer as accepted。以上是关于我有一个用户 ID 列表,我想检查每个可用的用户 ID,如果不是,我想获取不可用的以下 ID的主要内容,如果未能解决你的问题,请参考以下文章
我有一个冲突矩阵,以及具有不同访问权限的用户列表,我想检查该用户是不是为冲突访问权限