2010-10-12 57 views
0

我的問題是python/django混合。我有一個表單模型,將顯示一些字段。基於這個模型的一些參數,發送到創建這個對象的元類的數據應該不同。但是如何在Meta的內部實現這個參數呢?我應該使用一些全局變量而不是對象參數(因爲它僅用於臨時存儲值)?獲取此對象的元類中對象的參數

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: