我在数据库表中有一个代表用户的UUID列表。我想获取所有符合此条件的用户,所以我使用__in
过滤器:
users = User.objects.filter(user__in=uuids)
如果不是所有的UUID都出现在表中,我想提出一个例外。换句话说,我希望每个uuid都返回一个结果,例如len(users) == len(uuids)
。有一种简单的Django方法吗?如果没有,我是否有一种简单的方法来创建这种行为?
答案 0 :(得分:0)
如果您愿意,可以使用排除为您提供与查询不匹配的对象
#this returns true if one or more and dont need to use len()
#if it looks better for you you can try it out
#if everything is fine will return None
if User.objects.filter().exclude(user__in=uiids).first():
raise your_error
答案 1 :(得分:0)
不要觉得太复杂。您想知道某个事物的列表是否完全包含在另一个事物的列表中,那只是普通的python:
user_ids = User.objects.values_list('user_id',flat=True)
if not set(uuids).issubset(user_ids): # or use .difference() to get the uuids missing from user_ids
raise stuff