diff options
Diffstat (limited to 'rest_framework')
| -rw-r--r-- | rest_framework/serializers.py | 2 | ||||
| -rw-r--r-- | rest_framework/tests/serializer.py | 17 | 
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):  | 
