Django admin site foreign key from dropdown to search_field
Я немного запутался в том, почему выпадающее поле внешнего ключа в админке сайта не меняется на поле поиска. Я прочитал документацию, в которой говорится:
Эти поля должны быть каким-либо видом текстового поля, например, CharField или TextField. Вы также можете выполнить связанный поиск по ForeignKey или ManyToManyField с помощью нотации API поиска "follow":
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)