Could you help me I have another requirement like I want to Show some fields for get method and for post method I want to serialize some other fields also. So how i can do that using same ProfileSerializers.
Plase help me.
Thank You
Regards,
Soumen
On Sun, Jul 28, 2019 at 2:59 PM Pradeep Sukhwani <ps.sukhwani@gmail.com> wrote:
you need to pass the username in the serializer.--Then in serializer, you can do something like this:
serializers.py:
profile_obj.save()
class ProfileSerializer(serializers.ModelSerializer):
user = UserCreateSerializer() # create the serializer for user
# mention all the other fields in profile model
class Meta:
model = Profile
fields = ('user',) # change this as per your requirementdef validate(self, attrs):
# validate the data if you have any conditions.
return attrs
def create(self, validated_data):
# pop out the username from dict to create profile data and then save the user.
user = validated_data.pop('username')
profile_obj = Profile.objects.create(**validated_data)
profile_obj.user = user
return {"success": True} # You can return anything that you want so that you can send this in reponse from api.py.
api.py
def post(self, request):
request_data = request.data
request_data.update({user: request.user.username})
serializer = ProfileSerializer(data=request_data)
if serializer.is_valid():
return Response(serializer.validated_data)
On Sunday, July 28, 2019 at 2:38:47 PM UTC+5:30, Soumen Khatua wrote:How I can hold Profile details and them save it after provide the user field details, Cn you tell me how i can do that?Thank youRegards,SoumenOn Sun, Jul 28, 2019 at 2:22 PM Pradeep Sukhwani <ps.su...@gmail.com> wrote:Hi Soumen,--
ModelSerializers
do not behave in exactly the same way asModelForm.
However, there are intentional design decisions behind these differences.commit
is not (and won't ever be) a keyword argument tosave()
.
I believe that the usage of
.save()
is pretty much adequately documented here.
On Sunday, July 28, 2019 at 2:14:31 PM UTC+5:30, Soumen Khatua wrote:Hi Folks,I'm getting this error when I declared like this:def post(self, request):
serializer = ProfileSerializer(data=request.data)
username = request.user.username
user_details = User.objects.get(username = username)
if serializer.is_valid():
serializer_data = serializer.save(commit=False)
serializer_data.user = user_details
serializer_data.save()File "/home/sou/halanx/env/lib/python3.6/site-packages/rest_framework/serializers.py", line 188, in save
"'commit' is not a valid keyword argument to the 'save()' method. "
AssertionError: 'commit' is not a valid keyword argument to the 'save()' method. If you need to access data before committing to the database then inspect 'serializer.validated_data' instead. You can also pass additional keyword arguments to 'save()' if you need to set extra attributes on the saved model instance. For example: 'serializer.save(owner=request.user)'.'please help me guys for this issue!!!Thank YouRegards,Soumen
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/38571245-f03d-454b-8d8b-5258af7ee8b3%40googlegroups.com.
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/2699fc81-c792-4156-920f-70ead8edeff7%40googlegroups.com.
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/CAPUw6WbcMJdMC6wAa4Ryxa-%2Bd-Lkd_n9fkE1q2vVR7n4k9ktTg%40mail.gmail.com.
No comments:
Post a Comment