you need to pass the username in the serializer.

Then in serializer, you can do something like this:

serializers.py:

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 requirement

   def 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
        profile_obj.save()
        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 you
>
> Regards,
> Soumen
>
> On Sun, Jul 28, 2019 at 2:22 PM Pradeep Sukhwani <ps.su...@gmail.com 
> <javascript:>> wrote:
>
>> Hi Soumen,
>>
>> ModelSerializers do not behave in exactly the same way as ModelForm. 
>> However, 
>> there are intentional design decisions behind these differences. commit is 
>> not (and won't ever be) a keyword argument to save().
>>
>>
>> I believe that the usage of .save() is pretty much adequately documented 
>> here 
>> <http://www.django-rest-framework.org/api-guide/serializers/#saving-instances>
>> .
>>
>>
>> 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 You
>>>
>>> Regards,
>>> 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 <javascript:>.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/django-users/38571245-f03d-454b-8d8b-5258af7ee8b3%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/django-users/38571245-f03d-454b-8d8b-5258af7ee8b3%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>>
>

-- 
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+unsubscr...@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.

Reply via email to