我有一个用户 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的主要内容,如果未能解决你的问题,请参考以下文章

我有一个冲突矩阵,以及具有不同访问权限的用户列表,我想检查该用户是不是为冲突访问权限

检查用户是不是存在于其他表中时查询出错

如何使用来自 json 文件的 vue-router 的用户 ID 检查特定的用户详细信息组件?

检查资源预留可用性

检查arraylist对象是不是存在

在 Laravel 中获取身份验证用户 ID