Модель формы Django: исключить поля регулярным выражением - PullRequest
0 голосов
/ 28 ноября 2009

У меня есть модель "Villa" с множеством описательных текстовых полей. Для каждого TextField у меня есть копия, которая будет русским переводом исходного поля, которое я называю добавлением «_ru», например «long_description» и «long_description_ru». Я хотел бы исключить все поля "_ru" из моей 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__ не содержит TextFields - даже если они визуализируются с помощью ModelForm. Я здесь очень глупый?

1 Ответ

2 голосов
/ 06 апреля 2010

Я вижу, что прошло много времени с тех пор, как вы спросили об этом, но у меня есть для вас ответ. Я думаю, что это может быть проще сделать в функции __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__ вместо мета-определения.

...