Получить параметры объекта в метаклассе этого объекта - PullRequest
0 голосов
/ 12 октября 2010

Моя проблема - это смесь 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 ]

2 голосов
/ 12 октября 2010

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

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

1 голос
/ 12 октября 2010

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

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

    if type != 2:
        self.fields.pop("price")
    else:
...