eadwinCode / django-ninja-extra

Django Ninja Extra - Class-Based Utility and more for Django Ninja(Fast Django REST framework)
https://eadwincode.github.io/django-ninja-extra/
MIT License
379 stars 29 forks source link

@Pagination Can't work with multiple response (non paginated response). #185

Open Elixir-MeetThoriya opened 6 days ago

Elixir-MeetThoriya commented 6 days ago

Hello, i use PageNumberPaginationExtra pagination NINJA_EXTRA = { 'PAGINATION_CLASS': 'ninja_extra.pagination.PageNumberPaginationExtra', 'PAGINATION_PER_PAGE': 2, 'ORDERING_CLASS': "ninja_extra.ordering.Ordering", }

       @http_get(
        path="",
        response={
            HTTPStatus.INTERNAL_SERVER_ERROR: ErrorSchema,
            HTTPStatus.OK: PaginatedResponseSchema[UserSchema],
        },
        summary="User List",
        description="This endpoint retrieves a list of users.",
        url_name="user_list"
    )
    @paginate()  # use default pagination (which define in setting.py)
    @ordering(Ordering, ordering_fields=['username'])
    @searching(Searching, search_fields=['username', 'first_name'])
    def list(self):
    try:
           ....
           ....
   except Exception as ex: 
          return (
          HTTPStatus.INTERNAL_SERVER_ERROR, 
          ErrorSchema(error_message="Something went wrong.", code=1001)
          )

if i return ErrorSchema Response , it throws below error:

[34743 135260654274112 23/Sep/2024 10:23:50] ERROR [django:116] 4 validation errors for NinjaResponseSchema response.results.0.id Field required [type=missing, input_value=<DjangoGetter: <HTTPStatu...RNAL_SERVER_ERROR: 500>>, input_type=DjangoGetter] For further information visit https://errors.pydantic.dev/2.8/v/missing response.results.0.username Field required [type=missing, input_value=<DjangoGetter: <HTTPStatu...RNAL_SERVER_ERROR: 500>>, input_type=DjangoGetter] For further information visit https://errors.pydantic.dev/2.8/v/missing response.results.1.id Field required [type=missing, input_value=<DjangoGetter: ErrorSchem...try later.', code=None)>, input_type=DjangoGetter] For further information visit https://errors.pydantic.dev/2.8/v/missing response.results.1.username Field required [type=missing, input_value=<DjangoGetter: ErrorSchem...try later.', code=None)>, input_type=DjangoGetter] For further information visit https://errors.pydantic.dev/2.8/v/missing Traceback (most recent call last): File "/home/meet/venv/bk-planner/lib/python3.10/site-packages/ninja_extra/operation.py", line 195, in run _processed_results = self._result_to_response( File "/home/meet/venv/bk-planner/lib/python3.10/site-packages/ninja/operation.py", line 260, in _result_to_response validated_object = response_model.model_validate( File "/home/meet/venv/bk-planner/lib/python3.10/site-packages/pydantic/main.py", line 568, in model_validate return cls.__pydantic_validator__.validate_python( pydantic_core._pydantic_core.ValidationError: 4 validation errors for NinjaResponseSchema response.results.0.id Field required [type=missing, input_value=<DjangoGetter: <HTTPStatu...RNAL_SERVER_ERROR: 500>>, input_type=DjangoGetter] For further information visit https://errors.pydantic.dev/2.8/v/missing response.results.0.username Field required [type=missing, input_value=<DjangoGetter: <HTTPStatu...RNAL_SERVER_ERROR: 500>>, input_type=DjangoGetter] For further information visit https://errors.pydantic.dev/2.8/v/missing response.results.1.id Field required [type=missing, input_value=<DjangoGetter: ErrorSchem...try later.', code=None)>, input_type=DjangoGetter] For further information visit https://errors.pydantic.dev/2.8/v/missing response.results.1.username Field required [type=missing, input_value=<DjangoGetter: ErrorSchem...try later.', code=None)>, input_type=DjangoGetter] For further information visit https://errors.pydantic.dev/2.8/v/missing

eadwinCode commented 6 days ago

Will look into this

Elixir-MeetThoriya commented 3 days ago

Thank you. it work