Получить параметры объекта в метаклассе этого объекта

Моя проблема - это смесь Python/ Django. У меня есть модель формы, которая будет отображать некоторые поля. Исходя из некоторых параметров этой модели, данные, отправляемые метаклассу, создающему этот объект, должны отличаться. Но как мне достичь этого параметра, когда он находится внутри тела Meta? Должен ли я использовать какой-то глобальный var вместо параметра объекта (так как он вводится только для временного хранения значения)?

class MyForm(forms.ModelForm):

    def __init__(self, *args, **kwargs):
        super(MyForm, self).__init__(*args, **kwargs)   
        instance = kwargs.get("instance")
        self.type = None
        try:
            type = self.instance.template_id
        except:
            pass

    class Meta:
        model = ContentBase
        fields = ["title", "slug", "description", "text", "price",]

        #here I need to have the value of 'type'
        if type != 2:
            try:
                fields.remove("price")
            except:
                pass

2 ответа

Решение

Вы не можете делать что-либо динамическое в Meta. Это не то, для чего это.

Почему вы не можете сделать все это в течение __init__? Вы можете изменить self.fields оттуда.

Как и предложил Даниил, я перенес все это на __init__:

    type = None
    try:
        type = self.instance.template_id
    except:
        pass

    if type != 2:
        self.fields.pop("price")
    else:
Другие вопросы по тегам