代码之家  ›  专栏  ›  技术社区  ›  Andy Baker

如何在Django中添加自定义内联管理小部件?

  •  10
  • Andy Baker  · 技术社区  · 16 年前

    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)
    

    我不知道如何将其应用于内联线。

    3 回复  |  直到 16 年前
        1
  •  11
  •   Carl Meyer    16 年前

    它的工作原理完全相同。tablarinline和StackedInline类也有一个formfield_for_dbfield方法,您可以在子类中以相同的方式重写它。

        2
  •  8
  •   luc    14 年前

    自Django 1.1以来,formfield_覆盖也在工作

    formfield_overrides = {
        models.ImageField: {'widget': AdminImageWidget},
    }
    
        3
  •  3
  •   ruohola    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)