Django-通过childs的一对一字段从父级获取子模型?

Django-通过childs的一对一字段从父级获取子模型?,django,django-queryset,Django,Django Queryset,下午好 我有一对模型,如下所示: class DeviceCircuitSubnets(models.Model): device = models.ForeignKey(Device, on_delete=models.CASCADE) circuit = models.ForeignKey(Circuit, on_delete=models.CASCADE, blank=True, null=True) subnet = models.ForeignKey(Subne

下午好

我有一对模型,如下所示:

class DeviceCircuitSubnets(models.Model):
    device = models.ForeignKey(Device, on_delete=models.CASCADE)
    circuit = models.ForeignKey(Circuit, on_delete=models.CASCADE, blank=True, null=True)
    subnet = models.ForeignKey(Subnet, on_delete=models.CASCADE)
    ...

class BGPData(models.Model):
    device_circuit_subnet = models.OneToOneField(DeviceCircuitSubnets, verbose_name="Device", on_delete=models.CASCADE)
    bgp_peer_as = models.CharField(max_length=20, verbose_name='BGP Peer AS', blank=True, null=True)
    bgp_session = models.CharField(max_length=10, verbose_name='BGP Session', blank=True, null=True)
    bgp_routes = models.CharField(max_length=10, verbose_name='BGP Routes Received', blank=True, null=True)
    service_status = models.CharField(max_length=10, verbose_name='Service Status', blank=True, null=True)  
    timestamp = models.DateTimeField(auto_now=True, blank=True, null=True) 
我正在过滤设备电路子网,然后我还想通过每个过滤项访问BGPData相关模型

service_data = DeviceCircuitSubnets.objects.filter(monitored=True, device__site_id=site_id) \
                                            .select_related('device','circuit','subnet')
我已尝试将bgpdata添加到“选择相关”和“预回迁”,但这两个选项当前都不起作用,返回时出现错误,说明模型不存在

我的查询需要如何查找才能获得查询集中的每个一对一字段

谢谢

因为您没有在
OneToOneField
上设置属性,所以您需要使用小写的模型名称来表示反向关系:

service_data = DeviceCircuitSubnets.objects.filter(monitored=True, device__site_id=site_id) \
                                            .select_related('bgpdata')
还请注意:

如果相关表中不存在条目,则在访问反向关系时引发DoesNotExist异常