DRF serializer.save() not saving to database
I have an api that will do a patch on a resource (MyUser). It validates ok and seems to save the object, however when querying the database the changes have not been saved.
class UserSignupView(generics.UpdateAPIView):
serializer_class = MyUserSerializer
def get_object(self, email):
obj = MyUser.objects.get(email=email)
self.check_object_permissions(self.request, obj)
return obj
def patch(self, request):
print(request.user)
user = self.get_object(request.user.email)
print(user.street)
serializer = MyUserSerializer(user, data=request.data, partial=True)
serializer.is_valid(raise_exception=True)
serializer.save()
savedUser = MyUser.objects.get(email=request.user.email)
print(savedUser.street)
print(serializer.data)
return Response(serializer.data)
class MyUserSerializer(serializers.ModelSerializer):
class Meta:
model = MyUser
fields = (
'id', 'first_name', 'last_name', 'email', 'phone_number', 'street', 'locality', 'city',
'county', 'postcode')
Looking at the print statements I get:
user@example.com
None
123 Fake Street
MyUser object
It returns the correct serialised data which contains the changes but the database does not have the changes. The database connection is ok as I can query it and make other reads/writes/etc. It's pretty much the same as the UpdateModelMixin except I've had to override the get_object with a passed in parameter.
django django-models django-rest-framework django-serializer
|
show 7 more comments
I have an api that will do a patch on a resource (MyUser). It validates ok and seems to save the object, however when querying the database the changes have not been saved.
class UserSignupView(generics.UpdateAPIView):
serializer_class = MyUserSerializer
def get_object(self, email):
obj = MyUser.objects.get(email=email)
self.check_object_permissions(self.request, obj)
return obj
def patch(self, request):
print(request.user)
user = self.get_object(request.user.email)
print(user.street)
serializer = MyUserSerializer(user, data=request.data, partial=True)
serializer.is_valid(raise_exception=True)
serializer.save()
savedUser = MyUser.objects.get(email=request.user.email)
print(savedUser.street)
print(serializer.data)
return Response(serializer.data)
class MyUserSerializer(serializers.ModelSerializer):
class Meta:
model = MyUser
fields = (
'id', 'first_name', 'last_name', 'email', 'phone_number', 'street', 'locality', 'city',
'county', 'postcode')
Looking at the print statements I get:
user@example.com
None
123 Fake Street
MyUser object
It returns the correct serialised data which contains the changes but the database does not have the changes. The database connection is ok as I can query it and make other reads/writes/etc. It's pretty much the same as the UpdateModelMixin except I've had to override the get_object with a passed in parameter.
django django-models django-rest-framework django-serializer
Sinceprint(savedUser.street)
prints the street correctly, your data is saved to the database. Where do you see that the object isn't saved?
– dirkgroten
Nov 12 at 14:49
When I look at the actual database. The data just isn't there
– user1584120
Nov 12 at 15:12
That's not possible, you're looking in a wrong way.MyUser.objects.get(email=request.user.email)
gives you a fresh object fetched from the database.
– dirkgroten
Nov 12 at 15:14
I know, this is why I'm confused. I'm looking at the django admin page and at the actual database and they are both missing the value for street that gets printed out
– user1584120
Nov 12 at 15:33
How isMyUser
defined? And are you looking at the DjangoUser
or atMyUser
?
– dirkgroten
Nov 12 at 15:34
|
show 7 more comments
I have an api that will do a patch on a resource (MyUser). It validates ok and seems to save the object, however when querying the database the changes have not been saved.
class UserSignupView(generics.UpdateAPIView):
serializer_class = MyUserSerializer
def get_object(self, email):
obj = MyUser.objects.get(email=email)
self.check_object_permissions(self.request, obj)
return obj
def patch(self, request):
print(request.user)
user = self.get_object(request.user.email)
print(user.street)
serializer = MyUserSerializer(user, data=request.data, partial=True)
serializer.is_valid(raise_exception=True)
serializer.save()
savedUser = MyUser.objects.get(email=request.user.email)
print(savedUser.street)
print(serializer.data)
return Response(serializer.data)
class MyUserSerializer(serializers.ModelSerializer):
class Meta:
model = MyUser
fields = (
'id', 'first_name', 'last_name', 'email', 'phone_number', 'street', 'locality', 'city',
'county', 'postcode')
Looking at the print statements I get:
user@example.com
None
123 Fake Street
MyUser object
It returns the correct serialised data which contains the changes but the database does not have the changes. The database connection is ok as I can query it and make other reads/writes/etc. It's pretty much the same as the UpdateModelMixin except I've had to override the get_object with a passed in parameter.
django django-models django-rest-framework django-serializer
I have an api that will do a patch on a resource (MyUser). It validates ok and seems to save the object, however when querying the database the changes have not been saved.
class UserSignupView(generics.UpdateAPIView):
serializer_class = MyUserSerializer
def get_object(self, email):
obj = MyUser.objects.get(email=email)
self.check_object_permissions(self.request, obj)
return obj
def patch(self, request):
print(request.user)
user = self.get_object(request.user.email)
print(user.street)
serializer = MyUserSerializer(user, data=request.data, partial=True)
serializer.is_valid(raise_exception=True)
serializer.save()
savedUser = MyUser.objects.get(email=request.user.email)
print(savedUser.street)
print(serializer.data)
return Response(serializer.data)
class MyUserSerializer(serializers.ModelSerializer):
class Meta:
model = MyUser
fields = (
'id', 'first_name', 'last_name', 'email', 'phone_number', 'street', 'locality', 'city',
'county', 'postcode')
Looking at the print statements I get:
user@example.com
None
123 Fake Street
MyUser object
It returns the correct serialised data which contains the changes but the database does not have the changes. The database connection is ok as I can query it and make other reads/writes/etc. It's pretty much the same as the UpdateModelMixin except I've had to override the get_object with a passed in parameter.
django django-models django-rest-framework django-serializer
django django-models django-rest-framework django-serializer
asked Nov 12 at 14:13
user1584120
3671520
3671520
Sinceprint(savedUser.street)
prints the street correctly, your data is saved to the database. Where do you see that the object isn't saved?
– dirkgroten
Nov 12 at 14:49
When I look at the actual database. The data just isn't there
– user1584120
Nov 12 at 15:12
That's not possible, you're looking in a wrong way.MyUser.objects.get(email=request.user.email)
gives you a fresh object fetched from the database.
– dirkgroten
Nov 12 at 15:14
I know, this is why I'm confused. I'm looking at the django admin page and at the actual database and they are both missing the value for street that gets printed out
– user1584120
Nov 12 at 15:33
How isMyUser
defined? And are you looking at the DjangoUser
or atMyUser
?
– dirkgroten
Nov 12 at 15:34
|
show 7 more comments
Sinceprint(savedUser.street)
prints the street correctly, your data is saved to the database. Where do you see that the object isn't saved?
– dirkgroten
Nov 12 at 14:49
When I look at the actual database. The data just isn't there
– user1584120
Nov 12 at 15:12
That's not possible, you're looking in a wrong way.MyUser.objects.get(email=request.user.email)
gives you a fresh object fetched from the database.
– dirkgroten
Nov 12 at 15:14
I know, this is why I'm confused. I'm looking at the django admin page and at the actual database and they are both missing the value for street that gets printed out
– user1584120
Nov 12 at 15:33
How isMyUser
defined? And are you looking at the DjangoUser
or atMyUser
?
– dirkgroten
Nov 12 at 15:34
Since
print(savedUser.street)
prints the street correctly, your data is saved to the database. Where do you see that the object isn't saved?– dirkgroten
Nov 12 at 14:49
Since
print(savedUser.street)
prints the street correctly, your data is saved to the database. Where do you see that the object isn't saved?– dirkgroten
Nov 12 at 14:49
When I look at the actual database. The data just isn't there
– user1584120
Nov 12 at 15:12
When I look at the actual database. The data just isn't there
– user1584120
Nov 12 at 15:12
That's not possible, you're looking in a wrong way.
MyUser.objects.get(email=request.user.email)
gives you a fresh object fetched from the database.– dirkgroten
Nov 12 at 15:14
That's not possible, you're looking in a wrong way.
MyUser.objects.get(email=request.user.email)
gives you a fresh object fetched from the database.– dirkgroten
Nov 12 at 15:14
I know, this is why I'm confused. I'm looking at the django admin page and at the actual database and they are both missing the value for street that gets printed out
– user1584120
Nov 12 at 15:33
I know, this is why I'm confused. I'm looking at the django admin page and at the actual database and they are both missing the value for street that gets printed out
– user1584120
Nov 12 at 15:33
How is
MyUser
defined? And are you looking at the Django User
or at MyUser
?– dirkgroten
Nov 12 at 15:34
How is
MyUser
defined? And are you looking at the Django User
or at MyUser
?– dirkgroten
Nov 12 at 15:34
|
show 7 more comments
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53263981%2fdrf-serializer-save-not-saving-to-database%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
active
oldest
votes
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53263981%2fdrf-serializer-save-not-saving-to-database%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Since
print(savedUser.street)
prints the street correctly, your data is saved to the database. Where do you see that the object isn't saved?– dirkgroten
Nov 12 at 14:49
When I look at the actual database. The data just isn't there
– user1584120
Nov 12 at 15:12
That's not possible, you're looking in a wrong way.
MyUser.objects.get(email=request.user.email)
gives you a fresh object fetched from the database.– dirkgroten
Nov 12 at 15:14
I know, this is why I'm confused. I'm looking at the django admin page and at the actual database and they are both missing the value for street that gets printed out
– user1584120
Nov 12 at 15:33
How is
MyUser
defined? And are you looking at the DjangoUser
or atMyUser
?– dirkgroten
Nov 12 at 15:34