Как в fastapi реализовать полное соответствие параметров запроса модели

Есть эндпойнт:

@router.get('/get_users', response_model=Page[SUserOut])
async def get_users(
    users_filter: UserFilter = FilterDepends(UserFilter),
) -> Any:
    pass

И есть класс пользовательского фильтра:

class UserFilter(Filter):
    login__ilike: Optional[str] = None
    login__in: Optional[List[str]] = None
    ...
    roles: Optional[RolesFilter] = FilterDepends(with_prefix("roles", RolesFilter))
    group: Optional[GroupUsersFilter] = FilterDepends(with_prefix("group",
                                                              GroupUsersFilter))
    search: Optional[str] = None
    order_by: List[str] = ["login"]

    class Constants(Filter.Constants):
        model = Users
        search_model_fields = ["login", "fio", "name", "organization", "surname", "patrname",
                           "email", "phone"]

Все работает замечательно, но если я в запросе передаю вместо login например поле login2, которого нет в фильтре, то это поле просто игнорируется(что в доках и описано), а мне бы хотелось чтобы в этом случае у меня происходила ошибка, например 422 Unprocessable Entity.

Пробовал наследовать класс фильтра от BaseModel pydantic, но тогда все фишки фильтра пропадают. Пробовал к этом классе(пользовательского фильтра) создать класс Config с параметрами extra='forbid', но тоже не помогло. Сам в питоне недавно и буду рад любой помощи


Ответы (0 шт):