2011-07-21 45 views
2
class ProductAdmin(admin.ModelAdmin): 
    form = ProductAdminForm() 

class ProductAdminForm(forms.ModelForm): 
    def __init__(self, request, *args, **kwargs): 
     super(ProductAdminForm, self).__init__(*args, **kwargs) 
     self.fields['field1'] = forms.CharField(required=False) 
     self.fields['field2'] = forms.IntegerField() 

如何將產品實例從ProductAdmin傳遞到ProductAdminForm?我想根據產品實例提供不同的字段。以表格形式訪問管理模型實例

+0

看到我重新編輯答案 –

回答

2

這樣的:

class ProductAdminForm(forms.ModelForm): 
    class Meta: 
     model = Product 

    def __init__(self, *args, **kwargs): 
     super(ProductAdminForm, self).__init__(*args, **kwargs) 

      product_instance = self.instance 
      if product_instance.id and product_instance.myField == "thatValue": 
       self.fields['field1'] = forms.CharField(required=False) 
       self.fields['field2'] = forms.IntegerField() 
+0

好吧,但我有一個問題,我不知道是什麼,而不是替代的????形式= ProductAdminForm(例如= ????) –

+0

你不必指定它。默認情況下,該實例是當前編輯的產品(無例如,如果創建) –

+0

但Django的拋出KeyError異常例外「創造」和「實例」 –