Reputation: 61
I am making Django applications.I am using Django Rest Framework.models.py is
class Info(models.Model):
username = custom_fields.NotEmptyCharField(max_length=100, unique=True)
email = models.EmailField()
password = custom_fields.NotEmptyCharField(max_length=100)
serializers.py is
class InfoSerializer(serializers.ModelSerializer):
created_time = serializers.DateTimeField(required=False)
updated_time = serializers.DateTimeField(required=False)
views.py is
class InfoViews(viewsets.ModelViewSet):
queryset = Info.objects.all()
serializer_class = InfoSerializer
def create(self, validated_data):
user = get_user_model(**validated_data)
user.set_password(validated_data['password'])
user.save()
urls.py is
urlpatterns = [
path('users/', views.InfoViews.as_view({
'get': 'list',
'post': 'create'
})),
]
When I post new user data,
user = get_user_model(**validated_data)
TypeError: get_user_model() argument after ** must be a mapping, not Request error happens
I searched create() argument after ** must be a mapping, not unicode,so I found maybe necessary thing is not in serializer.py but I really cannot understand how to fix this.What is wrong in my code?How should I fix this?
Full traceback is
Traceback (most recent call last):
File "/usr/local/lib/python3.6/site-packages/django/core/handlers/exception.py", line 35, in inner
response = get_response(request)
File "/usr/local/lib/python3.6/site-packages/django/core/handlers/base.py", line 128, in _get_response
response = self.process_exception_by_middleware(e, request)
File "/usr/local/lib/python3.6/site-packages/django/core/handlers/base.py", line 126, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/usr/local/lib/python3.6/site-packages/django/views/decorators/csrf.py", line 54, in wrapped_view
return view_func(*args, **kwargs)
File "/usr/local/lib/python3.6/site-packages/rest_framework/viewsets.py", line 95, in view
return self.dispatch(request, *args, **kwargs)
File "/usr/local/lib/python3.6/site-packages/rest_framework/views.py", line 494, in dispatch
response = self.handle_exception(exc)
File "/usr/local/lib/python3.6/site-packages/rest_framework/views.py", line 454, in handle_exception
self.raise_uncaught_exception(exc)
File "/usr/local/lib/python3.6/site-packages/rest_framework/views.py", line 491, in dispatch
response = handler(request, *args, **kwargs)
File "/opt/project/app/views.py", line 22, in create
user = User(**validated_data)
TypeError: ModelBase object argument after ** must be a mapping, not Request
Upvotes: 0
Views: 75
Reputation: 308769
Call get_user_model
method to get the User class before creating the user:
User = get_user_model()
user = User(**validated_data)
Upvotes: 1