aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTom Christie2013-02-26 11:46:07 -0800
committerTom Christie2013-02-26 11:46:07 -0800
commitd59ed6491535d8e3c2fb334835259326a6d0bc7c (patch)
tree2251b21b1f298cc3cfefa88cb8c27c81604390c3
parent80b0234793321f828979d30015151c8d7900fc9f (diff)
parente476dcb8c70f3792f01214f8d4a13c9316e11341 (diff)
downloaddjango-rest-framework-d59ed6491535d8e3c2fb334835259326a6d0bc7c.tar.bz2
Merge pull request #683 from dbrgn/serializer_exception_msg
Improved exception message for missing serializer model meta option
-rw-r--r--rest_framework/serializers.py2
-rw-r--r--rest_framework/tests/serializer.py17
2 files changed, 19 insertions, 0 deletions
diff --git a/rest_framework/serializers.py b/rest_framework/serializers.py
index 266a2402..91af2af2 100644
--- a/rest_framework/serializers.py
+++ b/rest_framework/serializers.py
@@ -424,6 +424,8 @@ class ModelSerializer(Serializer):
"""
cls = self.opts.model
+ assert cls is not None, \
+ "Serializer class '%s' is missing 'model' Meta option" % self.__class__.__name__
opts = get_concrete_model(cls)._meta
pk_field = opts.pk
# while pk_field.rel:
diff --git a/rest_framework/tests/serializer.py b/rest_framework/tests/serializer.py
index 671494b5..36703fd9 100644
--- a/rest_framework/tests/serializer.py
+++ b/rest_framework/tests/serializer.py
@@ -91,6 +91,11 @@ class PositiveIntegerAsChoiceSerializer(serializers.ModelSerializer):
fields = ['some_integer']
+class BrokenModelSerializer(serializers.ModelSerializer):
+ class Meta:
+ fields = ['some_field']
+
+
class BasicTests(TestCase):
def setUp(self):
self.comment = Comment(
@@ -353,6 +358,18 @@ class ValidationTests(TestCase):
self.assertIn('created', serializer.errors)
+ def test_missing_model_field_exception_msg(self):
+ """
+ Assert that a meaningful exception message is outputted when the model
+ field is missing (e.g. when mistyping ``model``).
+ """
+ try:
+ serializer = BrokenModelSerializer()
+ except AssertionError as e:
+ self.assertEquals(e.args[0], "Serializer class 'BrokenModelSerializer' is missing 'model' Meta option")
+ except:
+ self.fail('Wrong exception type thrown.')
+
class CustomValidationTests(TestCase):
class CommentSerializerWithFieldValidator(CommentSerializer):