Django - Получение списка элементов, для которых существуют значения
У меня есть проект на Django. У меня есть 2 модуля, QlikApp и QlikAppUserAccess, которые связаны с ForeignKey.
Я хочу получить все приложения, которые имеют связанные данные '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 приложения:
- app1
- app2
- app3
У меня есть 2 значения в модели QlikAppUserAccess.
- Roni -> относится к app1
- Avi -> связано с app2
Так что мне нужно видеть только 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
запись.