Динамические поля в Django Admin

Я хочу иметь дополнительные поля, касающиеся значения одного поля. Для этого я создаю настраиваемую форму администратора, чтобы добавить несколько новых полей.

В связи с сообщением в блоге jacobian 1 я придумал следующее:

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)

Но дополнительное поле 'foo' не отображается в админке. Если я добавлю такое поле, все будет работать нормально, но не так динамично, как требуется, чтобы добавить поля, относящиеся к значению другого поля модели

class ProductAdminForm(forms.ModelForm):

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

    class Meta:
        model = Product

class ProductAdmin(admin.ModelAdmin):
    form = ProductAdminForm

admin.site.register(Product, ProductAdmin)

. Есть ли какой-нибудь метод инициализации, который я должен снова запустить, чтобы новое поле работает? Или есть еще одна попытка?

16
задан Stephan Hoyer 4 November 2011 в 11:44
поделиться