2009-11-28 8 views
0

J'ai un modèle "Villa" avec beaucoup de TextFields descriptifs. Pour chaque TextField, j'ai une copie qui sera la traduction russe du champ d'origine, que j'appelle en ajoutant "_ru", par exemple "long_description" et "long_description_ru". Je voudrais exclure tous les « _ru » champs de mon ModelForm, que je pensais que je serais capable de faire comme ceci:Django modelform: exclure les champs par regex

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) 

Cependant, Villa.__dict__ ne contient pas les TextFields - même si elles se rendus par la ModelForm. Suis-je très stupide ici?

Répondre

2

Je vois que cela fait un moment que vous avez posé cette question mais j'ai une réponse pour vous. Je pense que cela pourrait être plus facile à faire dans la fonction __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] 

Le code est pas tout à fait testé mais je pense qu'il est plus facile de le faire dans le __init__ par rapport à la définition Meta.

Questions connexes