需要一些帮助将ModelForm传递给内联。
这是我必须测试可用的IP地址。它适用于标准的ModelAdmin,但我需要它进入Inline。但我不知道如何使用foreignkey获取列表。可用的IP地址需要进入DslamSet模型,IP地址在保存期间在IP_block模型中计算。
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:
split_range = self.instance.ip_range.split(' ')
ip_list_choices = zip(split_range, split_range)
self.fields['ip_list'] = forms.ChoiceField(choices=ip_list_choices)
class Meta:
model = IP_block
我正在考虑这样做,但似乎没有用。我收到错误“没有提供异常”
class DslamSetForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(DslamSetForm, self).__init__(*args, **kwargs)
if self.instance and self.instance.ip_block.ip_range:
split_range = self.instance.ip_block.ip_range.split(' ')
ip_list_choices = zip(split_range, split_range)
self.fields['ip_list'] = forms.ChoiceField(choices=ip_list_choices)
class Meta:
model = DslamSet
我知道我做错了什么,但不确定它是什么。欢迎任何帮助。
答案 0 :(得分:0)
我认为我找到了一个解决方案,但我确信有更正确的方法可以做到这一点。
class DslamSetForm(forms.ModelForm):
def clean(self, *args, **kwargs):
if self.cleaned_data and self.instance and self.instance.ip_block and self.instance.ip_block.ip_range and not self.instance.port:
super(DslamSetForm, self).clean(*args, **kwargs)
split_range = self.instance.ip_block.ip_range.split(' ')
ip_list_choices = zip(split_range, split_range)
self.fields['ip_address'] = forms.ChoiceField(choices=ip_list_choices)
return self.cleaned_data
class Meta:
model = IP_block