2011-07-21 8 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

は、[OK]を、私の再編集した答え –

答えて

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

を参照してください、私は問題を抱えている、私が代わりに置換するかわからない???? form = ProductAdminForm(instance = ????) –

+0

あなたはそれを指定する必要はありません。デフォルトではインスタンスは現在編集されている製品です(作成した場合はインスタンスはありません) –

+0

Djangoは 'created'と 'instance'のKeyError例外をスローします –

関連する問題