django-ninja icon indicating copy to clipboard operation
django-ninja copied to clipboard

Add support of dataclasses

Open dan83g opened this issue 1 year ago • 3 comments

After updating pydantic, it was no longer possible to use the __pydantic_model__ attribute (pydantic.dataclasses.dataclass). Is it possible to create schemas dynamically from dataclasses.

dan83g avatar Dec 12 '23 14:12 dan83g

@dan83g

could you provide some use case ?

why dont you just use pydantic's dataclasses ?

from pydantic.dataclasses import dataclass

@dataclass
class User:
    id: int
    name: str

vitalik avatar Dec 12 '23 14:12 vitalik

I would like something like this (SearchRequest)

@pydantic.dataclasses.dataclass(config=pydantic.ConfigDict(arbitrary_types_allowed=True))
class SearchRequest:
    q: str
    ...
    
    @field_validator('q')
    def validate_q(cls, v):
        return v

@router.api_operation(['GET'], '/search', response=SearchResponseSchema)
def search(request, query_params: Query[SearchRequest]):
    ... 

dan83g avatar Dec 12 '23 18:12 dan83g

Note to myself - pydantic.dataclasses should work - probably not detecting it correctly

vitalik avatar Dec 12 '23 19:12 vitalik