You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django技术问题:如何获取存在关联QlikAppUserAccess数据的QlikApp列表

解决方案

要获取所有存在关联QlikAppUserAccess记录的QlikApp实例,你可以用以下几种Django ORM的实现方式:

方法1:关联字段非空筛选+去重

通过模型定义的related_name(此处为qlik_app_user)筛选关联记录不为空的QlikApp,并用distinct()避免重复结果(一个App可能对应多条权限记录):

QlikApp.objects.filter(qlik_app_user__isnull=False).distinct()

方法2:标注关联记录数并筛选

使用annotate和Count统计每个App的关联权限记录数,再筛选记录数大于0的App,这种方法还能同时获取每个App的权限记录数量:

from django.db.models import Count

QlikApp.objects.annotate(access_record_count=Count('qlik_app_user')).filter(access_record_count__gt=0)

方法3:子查询筛选App ID

从QlikAppUserAccess中取出所有关联的App ID,再用这些ID筛选QlikApp:

QlikApp.objects.filter(id__in=QlikAppUserAccess.objects.values_list('app_id', flat=True)).distinct()

注意事项

  • 你的QlikAppUserAccess模型中app字段设置了null=True,上述方法会自动排除那些app为null的权限记录对应的App(这类记录不会关联到有效QlikApp)。
  • 若能确保每个App最多对应一条权限记录,可去掉distinct(),但通常建议保留以避免重复结果。

内容的提问来源于stack exchange,提问作者Itamar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 07:17:56