[英]How to change a default widget in the Django admin?
我正在为我的项目使用自动生成的Django admin。 结果如下:
对于字段“教授”,Django自动生成一个下拉列表,但其中至少包含1000个元素。 因此,我想用更用户友好的名称替换列表,例如用于“裁判员”的小部件,您基本上只键入名称的首字母,然后在下面显示元素。
如何修改admin.py或models.py文件以获得该结果?
您可以尝试将字段添加到admin.py中的raw_id字段中:
class YourModelAdmin(admin.ModelAdmin):
raw_id_fields=('professor', )
admin.site.register(YourModel, YourModelAdmin)
为此,您将获得一个漂亮的搜索按钮
您只需要选择一位教授还是多位教授? 之所以生成下拉列表,是因为您在模型中使用了professor = models.ForeignKey(Professor)
类的东西。 ForeignKey表示单个选择,但您的示例小部件表示多个选择。 因此,您的意图不是很清楚。 在下拉列表中,您还可以通过输入首字母来选择选项。
您正在寻找:
ModelAdmin.formfield_overrides
这提供了一种快捷方式来覆盖某些在管理员中使用的“ 字段”选项。 formfield_overrides是一本字典,将字段类映射到自变量字典,以在构造时传递给字段。
看这个例子:
from django.db import models
from django.contrib import admin
# Import our custom widget and our model from where they're defined
from myapp.widgets import RichTextEditorWidget
from myapp.models import MyModel
class MyModelAdmin(admin.ModelAdmin):
formfield_overrides = {
models.TextField: {'widget': RichTextEditorWidget},
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.