我正在使用Django,无法获取链接引用的对象。 这是我们的模特
class Environment(models.Model):
name = models.CharField(max_length=200, unique=True)
class Element(models.Model):
environment = models.ForeignKey(Environment, on_delete=models.CASCADE,related_name='GroupPre')
class AlarmActive(models.Model):
element = models.ForeignKey(Element, on_delete=models.CASCADE,related_name='AlarmActivePre')
我的任务很简单,我必须获取所有具有AlarmActive的环境。我该如何实现?谢谢!
答案 0 :(得分:0)
我们可以通过反向引用关系来做到这一点,并使用isnull
检查是否存在。由于环境可能有多个 Element
s,而Element
有多个 AlarmActive
s,我们应该使用{ {1}},以避免多次检索 same .distinct()
:
Environment
Environment.objects.filter(GroupPre__AlarmActivePre__isnull=False).distinct()
请注意,通常建议使用小写(带有下划线)编写SELECT DISTINCT `environment`.*
INNER JOIN `element` ON `environment`.`id` = `element`.`environment_id`
INNER JOIN `alarmactive` ON `element`.`id` = `alarmactive`.`element_id`
WHERE `alarmactive`.`id` IS NOT NULL
。由于这会引入属性和参数,因此通常也以小写形式编写。