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 <[email protected]
> <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 [email protected] <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 [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-users/2699fc81-c792-4156-920f-70ead8edeff7%40googlegroups.com.