Commit d59ed649 by Tom Christie

Merge pull request #683 from dbrgn/serializer_exception_msg

Improved exception message for missing serializer model meta option
parents 80b02347 e476dcb8
......@@ -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:
......
......@@ -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):
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment