aboutsummaryrefslogtreecommitdiffstats
path: root/rest_framework/serializers.py
diff options
context:
space:
mode:
authorGregor Müllegger2014-11-15 15:23:58 +0100
committerGregor Müllegger2014-11-15 15:29:52 +0100
commitad060aa360fa2ed33bd83cbb419d7b996a428726 (patch)
treee3ae062233b781727edf5f01cddbc0aa7b301b70 /rest_framework/serializers.py
parent4e035184384db8ed1227fdcb1dad2ea6ddb1cf68 (diff)
downloaddjango-rest-framework-ad060aa360fa2ed33bd83cbb419d7b996a428726.tar.bz2
More helpful error message when default `.create` fails. Closes #2013.
Diffstat (limited to 'rest_framework/serializers.py')
-rw-r--r--rest_framework/serializers.py14
1 files changed, 13 insertions, 1 deletions
diff --git a/rest_framework/serializers.py b/rest_framework/serializers.py
index e7e93f38..8dafea4d 100644
--- a/rest_framework/serializers.py
+++ b/rest_framework/serializers.py
@@ -34,6 +34,7 @@ from rest_framework.validators import (
)
import copy
import inspect
+import sys
import warnings
# Note: We do the following so that users of the framework can use this style:
@@ -593,7 +594,18 @@ class ModelSerializer(Serializer):
if relation_info.to_many and (field_name in validated_attrs):
many_to_many[field_name] = validated_attrs.pop(field_name)
- instance = ModelClass.objects.create(**validated_attrs)
+ try:
+ instance = ModelClass.objects.create(**validated_attrs)
+ except TypeError as exc:
+ msg = (
+ 'The mentioned argument might be a field on the serializer '
+ 'that is not part of the model. You need to override the '
+ 'create() method in your ModelSerializer subclass to support '
+ 'this.')
+ six.reraise(
+ type(exc),
+ type(exc)(str(exc) + '. ' + msg),
+ sys.exc_info()[2])
# Save many-to-many relationships after the instance is created.
if many_to_many: