python - django 管理站点外键从下拉列表到 search_field
问题描述
我有点卡在为什么管理站点中的外键下拉字段没有更改为搜索字段。我阅读了说明文件:
这些字段应该是某种文本字段,例如 CharField 或 TextField。您还可以使用查找 API “follow” 表示法对 ForeignKey 或 ManyToManyField 执行相关查找:
search_fields = ['foreign_key__related_fieldname']
我有两个模型:
class Company(models.Model):
company = models.CharField(max_length=100)
class User(AbstractUser):
company = models.ForeignKey(Company, on_delete=models.CASCADE)
当我想通过管理站点手动创建用户时,我会得到一个可能的公司的下拉列表作为外键
我虽然这个解决方案应该将下拉菜单更改为搜索字段,但它不是。我在这里做错了什么?如何将此外键字段更改为搜索字段?
admin.py from django.contrib import admin from .models import Company, User
class MyAdmin(admin.ModelAdmin):
search_fields = ['company__company']
admin.site.register(Company)
admin.site.register(User, MyAdmin)
解决方案
您应该为此使用autocomplete_fields 。search_fields
在要搜索的管理员上配置并将外键添加到该管理员/模型到autocomplete_fields
class CompanyAdmin(admin.ModelAdmin):
search_fields = ['company']
class MyAdmin(admin.ModelAdmin):
autocomplete_fields = ['company']
admin.site.register(Company, CompanyAdmin)
admin.site.register(User, MyAdmin)
推荐阅读
- javascript - nodejs - Set-Cookie 出现在响应中但在浏览器中丢失
- javascript - 从 href 调用 javascript 函数
- node.js - 使用节点 js 将 aac 文件写入光盘
- kubernetes - FailedScheduling:0/3 个节点可用:3 个 Pod 不足
- python - 使用 pandas groupby 查找列最大值的日期和值
- c++ - 可以在 lambda 运行之前使 lambda 捕获的 [this] 指针无效吗?
- python - 是否可以计算 AWS s3 对象的 sha256 或 sha1 哈希?
- firebase - 在 Firestore 安全规则中列出类型安全
- python - replace() 在 for 循环中不接受关键字参数
- regex - 我的正则表达式查找 IP 有效,但如何排除某些 IP