Django:覆盖RelatedFieldWidgetWrapper [英] Django: override RelatedFieldWidgetWrapper

查看:17
本文介绍了Django:覆盖RelatedFieldWidgetWrapper的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想更改管理站点中外键+"图标的显示方式.

I want to change the way that the "+" icon for the foreign key in the admin site is shown.

我发现打印代码的小部件是RelatedFieldWidgetWrapper,它位于django/contrib/admin/widgets.py.

I found that the widget that prints the code is RelatedFieldWidgetWrapper that is in django/contrib/admin/widgets.py.

所以我编写了这个类的版本,并更改​​了它的 render 函数.

So I wrote my version of this class and I changed its render function.

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

But now how can I use it? I mean... in the definition of my model do I have to use the formfield_overrides in this way?

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

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

I think that this is not the right way, because that widget is not the one that manage the whole foreign key, but only the "+" icon. Am I wrong?

非常感谢.

推荐答案

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

You would need to create custom ModelForm for ModelAdmin and override widget there.

示例代码:

#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的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆