2013-06-06 3 views
0

텍스트 필드의 IP 목록이 각 IP를 한 줄로 선택하는 대신 "ip_list_coices"로 이동하면 문제가 발생합니다.텍스트 필드 목록 및 필드. 선택 문제

IP는 별도의 선택이어야합니다. 나는 이것이 쉬운 수정일지도 모른다고 느끼지만 그것을 이해하는 것처럼 보일 수 없다. 다음은

예 : 이것은 내가 바라는 것입니다

192.168.1.2 192.168.1.3 ... 192.168.1.5

:

이 일어나는 것이다

192.168.1.2

192.168.1.3

...

192.168.1.5

models.py

#IP Block Class 
class IP_block(models.Model): 

#ip block and range save function 


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

    slash = unicode(self.slash) 

    self.broadcast_ip = broadcast 
    self.subnet = subnet 


    #rangeip for loop 

    ip = IP(self.network + slash) 


    for rangeip in ip[2:-1]: 
     self.ip_range += "%s \n" %rangeip 

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


network = models.IPAddressField(unique=True) 
slash = models.ForeignKey(Subnet, verbose_name='CIDR') 
subnet = models.CharField(max_length=64, blank=True) 
gateway_ip = models.CharField(max_length=64, blank=True) 
broadcast_ip = models.CharField(max_length=64, blank=True) 
ip_range = models.TextField(blank=True, verbose_name='Available IP Range') 
dslam = models.ManyToManyField(Dslam, verbose_name='Dslam', blank=True) 
ip_list = models.CharField(max_length=128, blank=True) 

class Meta: 
    verbose_name_plural = 'IP Blocks' 

def __unicode__(self): 
    return self.network 

forms.py

다니엘 권장
class IP_blockForm(forms.ModelForm): 
    def __init__(self, *args, **kwargs): 
    super(IP_blockForm, self).__init__(*args, **kwargs) 
     if self.instance and self.instance.ip_range: 

      #This is where I pass the list from the text field  

      ip_list_choices = [(self.instance.ip_range, self.instance.ip_range),] 

      self.fields['ip_list'] = forms.ChoiceField(choices=ip_list_choices) 

    class Meta: 
     model = IP_block 
+0

. 나는 당신이하려고하는 것을 아주 잘 이해하지 못합니다. –

+0

Ok, for 루프에서 IP 주소 목록을 텍스트 필드에 저장하는 대신. 선택 사항에 IP 주소 목록을 직접 전달할 수 있습니까? – Infinixd

답변

1

당신은 같은 것을 할 수 있습니다 : 당신은 하나의 인스턴스에서 (하나의 텍스트 필드 인) IP_RANGE를 검색하고

split_range = self.instance.ip_range.split(' ') #Or whatever your delimiter is 
ip_list_choices = zip(split_range, split_range) #Gives you a tuple. 
self.fields['ip_list'] = forms.ChoiceField(choices=ip_list_choices) 
+1

이것은 효과가 있습니다! 모든 도움을 다시 해 주셔서 감사합니다. 그것은 다른 시간과 같은 기본적인 수정이었습니다. – Infinixd