Django元类访问外部属性

时间:2015-12-08 19:13:05

标签: python django python-2.7 django-forms inner-classes

民间,

我需要实现一个根据变量可能略有不同的表单。我的类ModelForms的子类看起来像这样

class ConstantVwModelForm(forms.ModelForm):
  #couple attributes

  def __init__(self, hasData, *args, **kwargs): 

  class Meta:
    fields = ('xx', 'yy' ..)

我正在寻找从内部hasData访问变量class Meta的最佳方式,它就像

class ConstantVwModelForm(forms.ModelForm):
  #couple attributes

  def __init__(self, hasData, *args, **kwargs): 

  class Meta:
    if hasData:
      fields = ('xx', 'yy', ..)
    else:
      fields = ('hh', ..)

非常感谢任何帮助

1 个答案:

答案 0 :(得分:2)

你不应该这样做而且没有办法实现这一目标。您可以在__init__函数中动态删除字段:

class ConstantVwModelForm(forms.ModelForm):
    #couple attributes
    def __init__(self, hasData, *args, **kwargs):
        if hasData:
            del self.fields['hh']
        else:
            del self.fields['xx']
            del self.fields['yy']

    class Meta:
        model = ConstantVwModel