Comments (4)
@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.
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.
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.
@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)
- 3.15 not backwards compatible with 3.14 - "View' should either include a `queryset` attribute, or override the `get_queryset()` method." HOT 11
- 3.15 backward compatibility issue with 3.14 - `rest_framework.filters.SearchFilter.get_search_terms` returns `str` instead of `list` HOT 3
- New handling of default= for ModelSerializer HOT 6
- 3.15 regression: ListSerializer ValidationErrors silently changed return type
- 3.15 regression: ListSerializer ValidationError nested structure silently changed HOT 1
- 3.15 regression: UpdateModelMixin breaks views using Manager objects as queryset HOT 4
- Version 3.15.1 HOT 1
- 3.15 regression: Unset default namespace version suddenly raises 404 HOT 3
- 3.15(.1?) regression: optional fields in serializers are suddenly required (or need explicit None passed) HOT 11
- UniqueConstraint violation_error_message as error response in drf
- rest-framework Supports async class views ?
- 3.15 regression: Serializer validation failed for unique together constraint HOT 1
- Revert changes to `CursorPagination` that caused serious performance regression HOT 1
- Router.register cannot merge with urlpatters HOT 3
- UniqueTogetherValidator does not comply to Database standards
- HyperlinkedModelSerializer doesn't respect SECURE_PROXY_SSL_HEADER settings
- 3.15 is raising required error on model nullable fields HOT 1
- DRF generic views not fire post_save signal HOT 11
- [self-tests] cleanup order of `TestUrlPatternTestCase` HOT 1
- a question about BooleanField
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from django-rest-framework.