mirror of
				https://github.com/encode/django-rest-framework.git
				synced 2025-10-31 07:57:55 +03:00 
			
		
		
		
	Merge pull request #1596 from pipermerriam/piper/suport_unicode_model_references
`_resolve_model` should work with unicode strings
This commit is contained in:
		
						commit
						708b6a6c06
					
				|  | @ -49,7 +49,7 @@ def _resolve_model(obj): | ||||||
|     String representations should have the format: |     String representations should have the format: | ||||||
|         'appname.ModelName' |         'appname.ModelName' | ||||||
|     """ |     """ | ||||||
|     if type(obj) == str and len(obj.split('.')) == 2: |     if isinstance(obj, six.string_types) and len(obj.split('.')) == 2: | ||||||
|         app_name, model_name = obj.split('.') |         app_name, model_name = obj.split('.') | ||||||
|         return models.get_model(app_name, model_name) |         return models.get_model(app_name, model_name) | ||||||
|     elif inspect.isclass(obj) and issubclass(obj, models.Model): |     elif inspect.isclass(obj) and issubclass(obj, models.Model): | ||||||
|  |  | ||||||
|  | @ -3,6 +3,7 @@ from django.test import TestCase | ||||||
| 
 | 
 | ||||||
| from rest_framework.serializers import _resolve_model | from rest_framework.serializers import _resolve_model | ||||||
| from rest_framework.tests.models import BasicModel | from rest_framework.tests.models import BasicModel | ||||||
|  | from rest_framework.compat import six | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| class ResolveModelTests(TestCase): | class ResolveModelTests(TestCase): | ||||||
|  | @ -19,6 +20,10 @@ class ResolveModelTests(TestCase): | ||||||
|         resolved_model = _resolve_model('tests.BasicModel') |         resolved_model = _resolve_model('tests.BasicModel') | ||||||
|         self.assertEqual(resolved_model, BasicModel) |         self.assertEqual(resolved_model, BasicModel) | ||||||
| 
 | 
 | ||||||
|  |     def test_resolve_unicode_representation(self): | ||||||
|  |         resolved_model = _resolve_model(six.text_type('tests.BasicModel')) | ||||||
|  |         self.assertEqual(resolved_model, BasicModel) | ||||||
|  | 
 | ||||||
|     def test_resolve_non_django_model(self): |     def test_resolve_non_django_model(self): | ||||||
|         with self.assertRaises(ValueError): |         with self.assertRaises(ValueError): | ||||||
|             _resolve_model(TestCase) |             _resolve_model(TestCase) | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user