Получить параметры объекта в метаклассе этого объекта
Моя проблема - это смесь 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: