2010-10-12 8 views
0

Моя проблема - микс 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.

1

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

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

    if type != 2: 
     self.fields.pop("price") 
    else: 
Смежные вопросы