Django modelform:通过正则表达式排除字段

时间:2009-11-28 01:16:55

标签: django-forms

我有一个带有大量描述性TextFields的“Villa”模型。对于每个TextField,我有一个副本,它将是原始字段的俄语翻译,我通过附加“_ru”来命名,例如“long_description”和“long_description_ru”。我想从我的ModelForm中排除所有“_ru”字段,我认为我可以这样做:

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__不包含TextFields - 即使它们由ModelForm呈现。我在这里非常愚蠢吗?

1 个答案:

答案 0 :(得分: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__与Meta定义中比较容易。