Как в 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', но тоже не помогло. Сам в питоне недавно и буду рад любой помощи