Dynamique des champs dans Django Admin

Je veux avoir des champs supplémentaires concernant la valeur d'un champ. À cet effet, je construire un administrateur personnalisé formulaire pour ajouter de nouveaux champs.

Liées à l'article sur le blog du jacobien Un c'est ce que je suis venu avec:

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

    def __init__(self, *args, **kwargs):
        super(ProductAdminForm, self).__init__(*args, **kwargs)
        self.fields['foo'] = forms.IntegerField(label="foo")

class ProductAdmin(admin.ModelAdmin):
    form = ProductAdminForm

admin.site.register(Product, ProductAdmin)

Mais sur le terrain 'foo' ne s'affiche pas dans l'interface d'admin. Si j'ajoute le champ comme ça, tout fonctionne bien mais n'est pas aussi dynamique que nécessaire, pour ajouter les champs concernant la valeur d'un autre champ du modèle

class ProductAdminForm(forms.ModelForm):

    foo = forms.IntegerField(label="foo")

    class Meta:
        model = Product

class ProductAdmin(admin.ModelAdmin):
    form = ProductAdminForm

admin.site.register(Product, ProductAdmin)

Si il ya une méthode initialize que j'ai pour déclencher à nouveau pour faire le nouveau champ de travail? Ou est-il tout autre tentative?

OriginalL'auteur Stephan Hoyer | 2011-11-04