问题描述
我有这四个表。
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 (将#修改为@)