【问题标题】:How to customize the "Clear" checkbox for a models.ImageField in django Admin page?如何在 django 管理页面中为 models.ImageField 自定义“清除”复选框?
【发布时间】:2012-08-17 14:25:03
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    似乎“清除”是硬编码。

    因此,您可以像这样创建一个自定义小部件:

    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},
        }
    

    或者您使用转换机制将清除转换为删除。 Django 翻译在docs 中描述得很好。

    我个人认为这对您的问题来说是相当多的开销,除非您仍然使用翻译。我会明确推荐自定义小部件 - 附加代码非常少。

    【讨论】:

    • 我只想编辑这些:class MyModel(models.Model) class MyModelAdmin(admin.ModelAdmin) 不添加或编辑任何其他内容,例如“class MyClearableFileInput(ClearableFileInput)”我该怎么办?跨度>
    • 正如我所写,您的第二个选择是翻译。虽然它会有所帮助,但如果您更详细地解释,为什么您不能采用其他方法。正如我所说,“清除”是硬编码的。没有简单的方法!
    • 如何在 django 翻译机制中更改 'clear' 的翻译?
    • 我刚刚更新了我的答案。如果您仍然对创建自定义小部件犹豫不决,请分享您的疑虑的更多详细信息。
    • 如何将 MyClearableFileInput(ClearableFileInput) 类分配给我的表单域?
    猜你喜欢
    • 2010-12-23
    • 2014-11-18
    • 2011-01-17
    • 2016-05-04
    • 2020-10-02
    • 1970-01-01
    • 2021-05-07
    • 2023-03-16
    • 2018-10-27
    相关资源
    最近更新 更多