我有一个 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 个应用程序:
我在 QlikAppUserAccess 模型中有 2 个值。
所以我只需要查看 app1 和 app2。
非常感谢。
您的过滤条件为:
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
项目。