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异常