【问题标题】:Loop in Django ModelDjango 模型中的循环
【发布时间】:2013-05-29 00:39:21
【问题描述】:

我有一个 IP 块计算器 Web 应用程序,它将根据斜杠打印一系列 IP 地址。但是,它仅将范围中的最后一条记录保存到文本字段中。我希望能够将其全部保存到文本字段中。

我在我的代码中使用 python-ipy。看最后一个for循环"rangeip",

这是我的代码:

#ip block and range save function 

def save(obj, *args, **kwargs):

        subnet = unicode(obj.subnet)

        first = IP(obj.ip_start + subnet).net()
        broadcast = IP(obj.ip_start + subnet).broadcast()

        print first
        print broadcast

        obj.broadcast_ip = broadcast

        ip_block = IP(obj.ip_start + subnet)
        ip_block.WantPrefixLen = 3


        ip = IP(obj.ip_start + subnet)

        for gateway in ip[1]:
            obj.gateway_ip = gateway
            print gateway

        #rangeip for loop

        for rangeip in ip:
            obj.ip_range = rangeip
            print rangeip

        super(IP_block, obj).save(*args, **kwargs)

这就是我想要的,能够将列表保存到文本字段中,它只保存最后一个 ip:192.168.1.31

我想要的例子:

192.168.1.1 192.168.1.0 192.168.1.1 192.168.1.2 192.168.1.3 192.168.1.4 192.168.1.5 192.168.1.6 192.168.1.7 192.168.1.8 192.168.1.9 192.168.1.10 192.168.1.11 192.168.1.12 192.168.1.13 192.168.1.14 192.168.1.15 192.168.1.16 192.168.1.17 192.168.1.18 192.168.1.19 192.168.1.20 192.168.1.21 192.168.1.22 192.168.1.23 192.168.1.24 192.168.1.25 192.168.1.26 192.168.1.27 192.168.1.28 192.168.1.29 192.168.1.30 192.168.1.31

任何帮助都非常感谢。

【问题讨论】:

  • ip_range 是如何定义的?

标签: django list for-loop django-models ipv4


【解决方案1】:

obj.ip_range = rangeip 是一个分配。您正在用新的rangeip 替换obj.ip_range 的内容。

你需要做的是:

obj.ip_range += "%s"%rangeip

【讨论】:

  • 感谢您的帮助,karthikr!
  • 我还有一个问题,是否可以将ip列表添加到manytomanyfield?
  • 是的,你可以,但你想存储这么多冗余数据吗?
  • 我想我想要的是将每个 ip 保存到它自己的字段中。文本字段有效,但没有关系。
  • 您可以将起始ip和子网掩码保存在一个类中,并对其进行外键引用。
猜你喜欢
  • 2014-03-10
  • 2011-10-18
  • 2015-10-28
  • 2021-04-06
  • 1970-01-01
  • 1970-01-01
  • 2020-08-28
  • 2013-09-28
相关资源
最近更新 更多