Django - 获取存在值的项目列表

问题描述 投票:0回答:1

我有一个 Django 项目。 我有 2 个与外键相关的模块:QlikApp 和 QlikAppUserAccess。

我想要获取所有具有相关“Qlik AppUser Access”数据的应用程序。

我该怎么做?

class QlikApp(models.Model):
    id = models.CharField(
        verbose_name="App ID",
        primary_key=True,
        max_length=100,
        null=False,
        blank=False,
    )
    application_name = models.CharField(
        verbose_name="Qlik app name",
        max_length=100,
        blank=False,
        null=False,
    )

    def __str__(self):
        return f"{self.application_name}"


class QlikAppUserAccess(models.Model):
    app = models.ForeignKey(
        QlikApp,
        related_name="qlik_app_user",
        on_delete=models.PROTECT,
        null=True,
        blank=True,
    )
    employee = models.ForeignKey(
        Employee,
        related_name="employee_app_access",
        on_delete=models.PROTECT,
        null=True,
        blank=True,
    )
    access_type_dropdown = (
        ("ADMIN", "ADMIN"),
        ("USER", "USER"),
    )
    access_type = models.CharField(
        verbose_name="Access Type",
        max_length=30,
        blank=True,
        null=True,
        choices=access_type_dropdown,
    )

    def __str__(self):
        return f"{self.app.application_name} - {self.employee.employee_user_name} - {self.access_type}"

例如:我有 10 个应用程序,但其中只有 2 个有相关数据,我想在其中显示它们。

例如:我有 3 个应用程序:

  1. 应用1
  2. 应用程序2
  3. 应用程序3

我在 QlikAppUserAccess 模型中有 2 个值。

  1. Roni -> 与 app1 相关
  2. Avi -> 与 app2 相关

所以我只需要查看 app1 和 app2。

非常感谢。

django django-models django-views
1个回答
0
投票

您的过滤条件为:

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

这将产生如下查询:

SELECT DISTINCT qlikapp.*
FROM qlikapp
INNER JOIN qlikappuseraccess ON qlikappuseraccess.app_id = qlikapp.id

因此仅检索有

至少
一个 qlikapp 记录的
qlikappuseraccess
项目。

© www.soinside.com 2019 - 2024. All rights reserved.