Django:覆盖RelatedFieldWidgetWrapper [英] Django: override 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屋!