diff options
| author | dizballanze <dizballanze@gmail.com> | 2018-02-17 11:27:46 +0300 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2018-02-19 10:51:15 -0500 |
| commit | eb002e7892793fb9f593efaed8d3ea52a2bfc96c (patch) | |
| tree | d4e964ee6fb1db3d5dd9ce9dac9ccc4d0ff94ff8 /tests/get_object_or_404 | |
| parent | 9b1125bfc7e2dc747128e6e7e8a2259ff1a7d39f (diff) | |
Fixed #29135 -- Prevented get_object/list_or_404() from hiding AttributeError raised by QuerySet filtering.
Diffstat (limited to 'tests/get_object_or_404')
| -rw-r--r-- | tests/get_object_or_404/models.py | 6 | ||||
| -rw-r--r-- | tests/get_object_or_404/tests.py | 10 |
2 files changed, 16 insertions, 0 deletions
diff --git a/tests/get_object_or_404/models.py b/tests/get_object_or_404/models.py index b18918a853..04f22dd049 100644 --- a/tests/get_object_or_404/models.py +++ b/tests/get_object_or_404/models.py @@ -25,11 +25,17 @@ class ArticleManager(models.Manager): return super().get_queryset().filter(authors__name__icontains='sir') +class AttributeErrorManager(models.Manager): + def get_queryset(self): + raise AttributeError('AttributeErrorManager') + + class Article(models.Model): authors = models.ManyToManyField(Author) title = models.CharField(max_length=50) objects = models.Manager() by_a_sir = ArticleManager() + attribute_error_objects = AttributeErrorManager() def __str__(self): return self.title diff --git a/tests/get_object_or_404/tests.py b/tests/get_object_or_404/tests.py index a72b766524..075f9a08e1 100644 --- a/tests/get_object_or_404/tests.py +++ b/tests/get_object_or_404/tests.py @@ -94,3 +94,13 @@ class GetObjectOr404Tests(TestCase): msg = "First argument to get_list_or_404() must be a Model, Manager, or QuerySet, not 'list'." with self.assertRaisesMessage(ValueError, msg): get_list_or_404([Article], title__icontains="Run") + + def test_get_object_or_404_queryset_attribute_error(self): + """AttributeError raised by QuerySet.get() isn't hidden.""" + with self.assertRaisesMessage(AttributeError, 'AttributeErrorManager'): + get_object_or_404(Article.attribute_error_objects, id=42) + + def test_get_list_or_404_queryset_attribute_error(self): + """AttributeError raised by QuerySet.filter() isn't hidden.""" + with self.assertRaisesMessage(AttributeError, 'AttributeErrorManager'): + get_list_or_404(Article.attribute_error_objects, title__icontains='Run') |
