如何解决如何使Django orm将输入参数转换为查询结果
我有这四个表。
class Topology(models):
id = models.BigAutoField(primary_key=True)
class Node(models):
id = models.AutoField(primary_key=True)
topology = models.ForeignKey('app.Topology',related_name='topology_nodes',on_delete=models.CASCADE)
class NodeInterface(models):
id = models.AutoField(primary_key=True)
node = models.ForeignKey('app.Node',related_name='node_interfaces',on_delete=models.CASCADE)
ip = models.GenericIPAddressField(null=True)
class Event(models):
id = models.AutoField(primary_key=True)
node = models.ForeignKey('app.Node',related_name='node_events',on_delete=models.CASCADE)
dst_ip = models.GenericIPAddressField()
NodeInterface.ip
是唯一的,因此我无法构建fk来连接Event.dst_ip
和NodeInterface.ip
。
我想将Event.dst_ip
转换为dst_node_id
。因此,我尝试了以下操作:
total_condition = Q()
total_condition.connector = 'OR'
for event in events:
event_data[event.node.topological_id] = dict(src=event.node_id,dst=[])
flux_condition = Q()
flux_condition.connector = 'AND'
flux_condition.children.append(('node__topological_id',event.node.topological_id))
flux_condition.children.append(('nic_ip_address',event.dst))
total_condition.children.append(flux_condition)
interfaces = BNodeInterface.objects.filter(total_condition)
查询后,我无法获得带有查询结果的event.node_id。希望有人可以帮助我解决该问题或教给我另一种实现此要求的方法。THX
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。