Как сделать так, чтобы окно поиска на странице списка изменений администратора осуществляло поиск по полю 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
Вернуться на верх