Django:覆盖RelatedFieldWidgetWrapper

标签 django django-admin django-forms

我想更改管理站点中外键的“+”图标的显示方式。

我发现打印代码的小部件是RelatedFieldWidgetWrapper这是在 django/contrib/admin/widgets.py .

所以我写了这个类的版本,我改变了它的 render功能。

但是现在我该如何使用它?我的意思是……在我的模型定义中,我是否必须使用 formfield_overrides通过这种方式?

formfield_overrides = {
        models.ForeignKey: {'widget': customRelatedFieldWidgetWrapper},
}

我认为这不是正确的方法,因为该小部件不是管理整个外键的小部件,而只是“+”图标。
我错了吗?

非常感谢。

最佳答案

您需要为 ModelAdmin 创建自定义 ModelForm 并在那里覆盖小部件。

示例代码:

#forms.py
class CustomForm(forms.ModelForm):
    user = forms.ModelChoiceField(queryset=User.objects.all(), widget=yourCustomWidget)

class Meta:
    model = MyModel

#admin.py
class MyModelAdmin(admin.ModelAdmin):
     form = CustomForm

关于Django:覆盖RelatedFieldWidgetWrapper,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2156028/

相关文章:

Django 管理内联 - 最少的表单数

python - 无法解析余数 : '!=None' from '!=None' | Django Admin

django - 在 Django DeleteView 中处理 PROTECT ERROR

django - 如何验证 django 中的表单字段?

django - 在 django-admin 中过滤选择字段选项

python - 带有附加参数(如果可能)或上下文处理器的通用 View 可将额外信息传递给模板?

python - 如何编写在其内部连接中使用复杂的 "on"子句的 Django 查询?

python - 如何检查Django表单是否包含任何数据?

django - 在 Django admin 中内联多个一对一字段

javascript - 从 Django 的 javascript 函数中获取 map 坐标的最快方法