2009-11-28 2 views
0

필자는 설명이 많은 TextField가있는 "Villa"모델을 사용하고 있습니다. 각 TextField에 대해 "long_description"및 "long_description_ru"와 같이 "_ru"를 추가하여 이름을 지정하는 원본 필드의 러시아어 번역본 사본을 가지고 있습니다. - 그들이 렌더링 얻을에도 불구하고Django modelform : 정규식으로 필드 제외

class VillaForm(ModelForm): 
    class Meta: 
     model = Villa 
     exclude = [] 
     for field_name in Villa.__dict__: 
      print field_name 
      if field_name.endswith("_ru"): 
       exclude.append(field_name) 

그러나, Villa.__dict__이 TextField의 포함되어 있지 않습니다 난 내가 이런 식으로 할 수있을 것이라고 생각 내 ModelForm에서 모든 "_ru"필드를 제외하고 싶습니다 ModelForm. 나는 여기 아주 바보인가?

답변

2

나는 당신이 이것을 물어 본 지 오래되었지만 나는 당신을위한 대답을 가지고 있습니다. 나는 이것이 __init__ 기능에서 수행하는 것이 더 쉬울 수 있다고 생각 :

class VillaForm(ModelForm): 
    class Meta: 
     model = Villa 

    def __init__(self, *args, **kwargs): 
     super(VillaForm, self).__init__(*args, **kwargs) 
     for field_name in self.fields.keys(): 
      if field_name.endswith("_ru"): 
       del self.fields[field_name] 

코드가 완전히 테스트되지 않은 상태입니다하지만 난 그게 메타 정의에 __init__ 대에서 할 쉽게 생각.