如何在Django的raw_id_fields中添加搜索栏?
问题描述
我开发Django项目时遇到问题:项目包含多个应用,其中一个存储所有用户联系信息,其他部门应用需从该应用注册用户。我使用raw_id_fields扩展信息,但点击放大镜跳转至联系人页面时,发现该页面无搜索栏。
以下是我的代码:
class PersonRegistrationAdmin(admin.ModelAdmin): list_display = ('person_role', 'contact') search_fields = ('contact__name', 'contact__phone_number', 'contact__email', 'contact__date_of_birth', 'contact__cnic') raw_id_fields = ('contact',) admin.site.register(PersonRegistration, PersonRegistrationAdmin)
解决方法
你当前在PersonRegistrationAdmin中定义的search_fields仅作用于PersonRegistration模型的后台列表页,而点击raw_id_fields的放大镜按钮后,跳转的是**Contact模型对应的后台选择页面**,因此需要给Contact模型的ModelAdmin配置search_fields。
具体操作:
- 找到
Contact模型所在的应用,创建或修改对应的ModelAdmin类,添加搜索字段配置:
from django.contrib import admin from .models import Contact # 导入你的Contact模型 class ContactAdmin(admin.ModelAdmin): # 配置Contact模型自身的字段作为搜索项 search_fields = ('name', 'phone_number', 'email', 'date_of_birth', 'cnic') # 可选:添加list_display优化列表页展示 list_display = ('name', 'phone_number', 'email') admin.site.register(Contact, ContactAdmin)
- 确保
Contact模型已在Django后台完成注册(上述代码已包含注册逻辑,若之前未注册可直接使用)。
完成配置后,再次点击raw_id_fields的放大镜跳转至联系人选择页面时,顶部会出现搜索栏,支持按你配置的字段进行搜索。
内容的提问来源于stack exchange,提问作者Aijaz Mahdavi
相关产品推荐
相关产品推荐

