0

需要一些帮助将 ModelForm 传递给内联。

这就是我必须测试我的可用 IP 地址的内容。它适用于标准的 ModelAdmin,但我需要它进入内联。但我不确定如何使用外键获取列表。可用的IP地址需要进入DslamSet Model,保存时IP地址在IP_block Model中计算。

表格.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:

            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

我知道我做错了什么,但不确定是什么。欢迎任何帮助。

4

1 回答 1

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
于 2013-06-10T23:33:14.833 回答