Django Model Field.choices에 변수를 추가 할 수 있습니까?Django Model Field.choices에 변수를 추가 할 수 있습니까?
정적으로 추가해야 할 때 기능이 손실됩니다.
IP_CHOICES = (
('192.168.1.0', '192.168.1.0'),
)
ip_address = models.IPAddressField(choices=IP_CHOICES, unique=True, blank=True)
정확한 IP 블록을 계산하기 위해 IPy라는 Python IP 인터프리터를 사용합니다.
ip = IP(self.network + slash)
for rangeip in enumerate(ip[2:-1]):
IP_CHOICES = (
("%s" %rangeip, "%s" %rangeip)
)
이것은 가능합니까? 그렇다면 도움을주십시오. 지난 주 동안 해킹하려고 시도하고 있었고, 어디에도 없었습니다. 어떤 도움을 주셔서 감사합니다.
모델 클래스를 참조하십시오.
#IP Block Class
class IP_block(models.Model):
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 block and range save function
def save(self, *args, **kwargs):
slash = unicode(self.slash)
broadcast = IP(self.network + slash).broadcast()
subnet = IP(self.network+slash).strNetmask()
self.broadcast_ip = broadcast
self.subnet = subnet
ip = IP(self.network + slash)
for gateway in ip[1]:
self.gateway_ip = gateway
#rangeip for loop
ip = IP(self.network + slash)
if self.ip_range:
print 'no override'
else:
for rangeip in ip[2:-1]:
self.ip_range += "%s\n" %rangeip
IP_CHOICE = "(%s" %rangeip + ", %s)," %rangeip
#ip_list select
ip_list = models.CharField(choices=IP_CHOICE, max_length=128, blank=True)
super(IP_block, self).save(*args, **kwargs)
class Meta:
verbose_name_plural = 'IP Blocks'
def __unicode__(self):
return self.network
무엇이 오류입니까? 'IP (self.network + slash)'는 무엇을 반환합니까? – karthikr
또한 다음과 같이 할 수 있습니다 :'choices = tuple (zip (ip, ip))' – karthikr
ip = 192.168.1.0/27 - 그건 ip 블록입니다. – Infinixd