微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使Django orm将输入参数转换为查询结果

如何解决如何使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_ipNodeInterface.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 举报,一经查实,本站将立刻删除。