12

これは非インラインでは簡単です。admin.py AdminOptions で次をオーバーライドするだけです。

def formfield_for_dbfield(self, db_field, **kwargs):
    if db_field.name == 'photo':
        kwargs['widget'] = AdminImageWidget()
        return db_field.formfield(**kwargs)
    return super(NewsOptions,self).formfield_for_dbfield(db_field,**kwargs)

これをインラインで機能するように適応させる方法がわかりません。

4

3 に答える 3

11

まったく同じように機能します。TabularInline および StackedInline クラスにも formfield_for_dbfield メソッドがあり、サブクラスで同じ方法でオーバーライドします。

于 2009-01-12T00:44:41.027 に答える
8

Django 1.1以降、formfield_overridesも機能しています

formfield_overrides = {
    models.ImageField: {'widget': AdminImageWidget},
}
于 2010-05-25T20:35:09.390 に答える
3

実例:

class PictureInline(admin.StackedInline):
    model = Picture_Gallery
    extra = 3
    def formfield_for_dbfield(self, db_field, **kwargs):
        if db_field.name == 'name':
            kwargs['widget'] = MyWidget()
        return super(PictureInline,self).formfield_for_dbfield(db_field,**kwargs)
于 2009-05-01T10:52:42.803 に答える