Sunday, July 28, 2019

Re: Djago Rest framework Error

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> 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.



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.
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.

No comments:

Post a Comment