aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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..669e5ae9 100644
--- a/rest_framework/serializers.py
+++ b/rest_framework/serializers.py
@@ -424,6 +424,8 @@ class ModelSerializer(Serializer):
"""
cls = self.opts.model
+ if cls is None:
+ raise AttributeError("Serializer class is missing 'model' Meta option")
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..af84c46b 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 AttributeError as e:
+ self.assertEquals(e.args[0], "Serializer class is missing 'model' Meta option")
+ except:
+ self.fail('Wrong exception type thrown.')
+
class CustomValidationTests(TestCase):
class CommentSerializerWithFieldValidator(CommentSerializer):