diff options
| author | Gregor Müllegger | 2014-11-15 15:23:58 +0100 |
|---|---|---|
| committer | Gregor Müllegger | 2014-11-15 15:29:52 +0100 |
| commit | ad060aa360fa2ed33bd83cbb419d7b996a428726 (patch) | |
| tree | e3ae062233b781727edf5f01cddbc0aa7b301b70 /rest_framework | |
| parent | 4e035184384db8ed1227fdcb1dad2ea6ddb1cf68 (diff) | |
| download | django-rest-framework-ad060aa360fa2ed33bd83cbb419d7b996a428726.tar.bz2 | |
More helpful error message when default `.create` fails. Closes #2013.
Diffstat (limited to 'rest_framework')
| -rw-r--r-- | rest_framework/serializers.py | 14 |
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: |
