Как сделать так, чтобы окно поиска на странице списка изменений администратора осуществляло поиск по полю phone_number в модели User
Я хочу выполнить поиск пользователей по их номеру телефона, search_list не делает этого с полями PhoneNumberField():
class User(AbstractUser, PermissionsMixin):
phone_number = PhoneNumberField( unique=True)
email = models.EmailField("Email address", unique=True, null=True, blank=True)
first_name = models.CharField(_("first name"), max_length=150, blank=True)
last_name = models.CharField(_("last name"), max_length=150, blank=True)
Я пытался использовать это поле в админке:
class UserAdmin(admin.ModelAdmin):
add_form = CustomUserCreationForm
form = UserChangeForm
search_fields = [
"first_name",
"last_name",
"email",
"phone_number",
]
но это не сработало.
Я решил эту проблему, переписав метод get_search_results для запроса поля PhoneField():
class UserAdmin(admin.ModelAdmin):
add_form = CustomUserCreationForm
form = UserChangeForm
inlines = [UserAddressInline, UserDeviceInline]
search_fields = ["first_name", "last_name", "email", "orders__order_ref"]
def get_search_results(self, request, queryset, search_term):
queryset, may_have_duplicates = super().get_search_results(
request, queryset, search_term
)
queryset |= self.model.objects.filter(phone_number=search_term)
return queryset, may_have_duplicates