【问题标题】:Find a get queryset values that existes in another queryset of tha same model查找存在于同一模型的另一个查询集中的获取查询集值
【发布时间】:2022-12-11 08:47:57
【问题描述】:

Iam tring filter permission queryset that exists in another Queryset of permission. 如何过滤该查询集

####### 我的代码

staff_perm = instance.permissions.all().
designation_perms = instance.designation.permissions.all()

# needed_designation_perms = designation_perms that exists in staff_perm

前任 : 考虑 A 和 B 是查询集

A = [1,2,3,4,5]
B = [1,3,5,7,9]

i want 

C = [1, 3, 5]
here C values from 'A' and values from 'B that exists in A'

【问题讨论】:

  • 您提供的示例不清楚。
  • 来自“A”的 C 值和来自“A 中存在的 B”的值
  • @ShiBilPK A 中存在的 A 中的值和 B 中存在的值只是您所描述的 A,不是吗?你的例子是正确的还是你想要C = [1, 3, 5]
  • @IainShelvington 是的

标签: django django-models


【解决方案1】:

如果你可以通过 for 循环迭代它,那将是可能的:

for x in desig_permission:
    if x in staff_permission:
        #DO SOMETHING like add to a list
    else:
        pass

【讨论】:

  • 没有迭代还有其他方法吗?
【解决方案2】:

如果期望值是唯一的,那么你可以试试这个(跨组比较):

C = list(set(A).intersection(set(B)))

更新 09.12.2022

试试intersection()。将 your_model 替换为您的模型名称,并将字段“field1”、“field2”替换为您自己的。

staff_perm = your_model.objects.values('field1')
designation_perms = your_model.objects.values('field2')
print(staff_perm.intersection(designation_perms))

【讨论】:

  • 我需要与查询集相同。不列出,这是查询集的工作。请将我的示例视为查询集(模型实例)
  • @ShiBilPK 更新了答案。
猜你喜欢
  • 2018-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-20
  • 2018-07-07
  • 2021-03-26
  • 2016-05-09
相关资源
最近更新 更多