2013-05-29 4 views
1

У меня есть веб-приложение калькулятора IP Block, которое будет печатать ряд IP-адресов на основе косой черты. Однако он сохраняет только последнюю запись в диапазоне в текстовое поле. Я хочу, чтобы все это можно было сохранить в текстовом поле.Loop in Django Model

Я использую python-ipy с моим кодом. Посмотрите на последний цикл «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

Любая помощь очень признателен.

+0

как 'ip_range' определяется? – karthikr

ответ

1

obj.ip_range = rangeip является назначением. Вы заменяете содержимое obj.ip_range на новый rangeip.

Что вам нужно сделать, это:

obj.ip_range += "%s"%rangeip 
+0

Спасибо за помощь, karthikr! – Infinixd

+0

darn. я пропустил это :) рад, что это сработало. – karthikr

+0

У меня есть еще один вопрос, можно ли добавить список ip в manytomanyfield? – Infinixd