Code Monkey home page Code Monkey logo

Comments (3)

bugiebhavya avatar bugiebhavya commented on May 15, 2024

here music_genre is manytomanyfield on user

class UserSchema(Schema):
id: int
name: str

class UserOut(Schema):
id: int
username: str
about: str
music_genre: UserSchema

result = self.response_model(response=result).dict()["response"]

File "pydantic/main.py", line 346, in pydantic.main.BaseModel.init
pydantic.error_wrappers.ValidationError: 2 validation errors for Response
response -> music_genre -> id
field required (type=value_error.missing)
response -> music_genre -> name
none is not an allowed value (type=type_error.none.not_allowed)

from django-ninja.

vitalik avatar vitalik commented on May 15, 2024

@bugiebhavya

not sure if I understand this correctly - but here is my guess:

you have the following models structure:

class MusicGenre(models.Model):
       name = models.CharField(...)


class User(models.Model):
      username = models.CharField(...)
      about = models.CharField(...)
      music_genre = models.ManyToManyField(MusicGenre) # <--m2m !!!!!!

Now to return a user with list of genres:

from typing import List

class MusicGenreSchema(Schema):
    id: int
    name: str

class UserOut(Schema):
    id: int
    username: str
    about: str
    music_genre: List[MusicGenreSchema]  # <-- typing.List !!!!!

@api.post("/foo", response=UserOut)
def some_operation(request, ...):
       user = ... get from db ...
       user.music_genre = list(user.music_genre.all())  # evaluate m2m queryset to list
       return user
  

yeah, it's a bit uncomfortable at the moment, but there are plans to allow to attach m2m fields directly to schemas

from django-ninja.

vitalik avatar vitalik commented on May 15, 2024

hey @bugiebhavya, let me know if it worked for you

from django-ninja.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.