Giter Site home page Giter Site logo

Comments (4)

sarathak avatar sarathak commented on May 20, 2024 1

@mlaxm I believe there might be a misunderstanding regarding the partial function. The partial function specifically avoids validating certain fields. If you provide data without a required field, regular validation will trigger an error. However, when using partial, it won't enforce validation for those specific fields.

for example :

data = {
    "bio": "new bio",
}
serializer = UserSerializer(user, data=data, partial=False)
serializer.is_valid(raise_exception=True)

this will through validation error

with partial it will not through error

data = {
    "bio": "new bio",
}
serializer = UserSerializer(user, data=data, partial=True)
serializer.is_valid(raise_exception=True)

from django-rest-framework.

mlaxm avatar mlaxm commented on May 20, 2024

Thank you, @sarathak, for providing clarification on the functionality of the "partial" argument. I appreciate the insight into its purpose.

I would like to draw further attention to the matter raised in my previous comment regarding the save operation. Given that I am performing a partial update and consequently not encountering any validation errors from the serializer (as I am only intending to update the "bio" field, for instance), it seems that all fields of the user instance are being updated. I am seeking clarification on whether this behavior aligns with the intended workflow? It may not be the expected outcome when employing partial updates

from django-rest-framework.

AlexanderNeilson avatar AlexanderNeilson commented on May 20, 2024

@mlaxm

Partial updates documentation is fairly explicit that partial allows partial updates. It does not change the other behaviours.

You have shown in your example one way to selectively update only some fields.

Are you establishing a "patch" method that will execute the partial update with fields? This may be a semantic side effect of development if you are creating your API to perform partial updates on put method queries instead of using patch for the partial update.

If you want to use other http verbs to perform a partial update you can do so but your code will need to identify the fields being updated and only update those fields.

The save method doesn't know that you only want it to operate on the limited fields unless you tell it. You have opened up an object, built a serializer based on the object you grabbed and the submitted data, then you saved it. So it then saves the entire serializer object.

Regards
Alexander

from django-rest-framework.

mlaxm avatar mlaxm commented on May 20, 2024

@AlexanderNeilson
According to the source code, either the .create or .update methods are called (with .update being invoked if the instance exists). This update method in turn calls the .save method on the serializer. My concern is that the .save method on the serializer always updates all of the model's fields, rather than just a few. There doesn't appear to be a way to specify updating only validated fields?
Thanks for your assistance

from django-rest-framework.

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.