如何自定义django Admin页面中models.ImageField的“Clear”复选框?

时间:2012-08-22 07:44:13

标签: django django-admin django-models django-modeladmin

我的django应用程序中有一个用户配置文件的模型,它有一个models.ImageField,我有一个ModelAdmin用于它 当用户上传图像时,在管理页面中,当我进入该用户的自定义页面时,在ImageField部分中,有上传图像的URL和名为“Clear”的复选框以及用于更新图像的按钮。如何更改该复选框的文本?例如,我希望它有文本“删除”而不是“清除”

1 个答案:

答案 0 :(得分:2)

似乎“清除”是硬编码。

所以你要么像这样创建一个自定义小部件:

class MyClearableFileInput(ClearableFileInput):
    clear_checkbox_label = ugettext_lazy('Delete')

并将其分配到您的表单字段

MyForm(forms.Form):
    myfile=ImageField(widget=MyClearableFileInput)

或者在管理员中添加覆盖

class MyModelAdmin(admin.ModelAdmin):
    formfield_overrides = {
        models.ImageField: {'widget': MyClearableFileInput},
    }

或者您使用翻译机制将Clear翻译为Delete。 Django翻译在docs中很好地描述了。

我个人认为,除非您正在使用翻译,否则您认为这是您的问题的一些开销。我明确推荐自定义小部件 - 附加代码实际上是最小的。