首页 > 解决方案 > 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)

标签: pythondjango

解决方案


您应该为此使用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)

推荐阅读