Skip to content

Commit

Permalink
Fixed #13640: Avoid generating an exception when a model has an attri…
Browse files Browse the repository at this point in the history
…bute named 'evaluate'. Thanks LukaszKorzybski and tobias.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@17093 bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information
kmtracey committed Nov 13, 2011
1 parent 0db571b commit b835301
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 1 deletion.
3 changes: 2 additions & 1 deletion django/db/models/sql/query.py
Expand Up @@ -14,6 +14,7 @@
from django.utils.tree import Node
from django.db import connections, DEFAULT_DB_ALIAS
from django.db.models import signals
from django.db.models.expressions import ExpressionNode
from django.db.models.fields import FieldDoesNotExist
from django.db.models.query_utils import InvalidQuery
from django.db.models.sql import aggregates as base_aggregates_module
Expand Down Expand Up @@ -1064,7 +1065,7 @@ def add_filter(self, filter_expr, connector=AND, negate=False, trim=False,
value = True
elif callable(value):
value = value()
elif hasattr(value, 'evaluate'):
elif isinstance(value, ExpressionNode):
# If value is a query expression, evaluate it
value = SQLEvaluator(value, self)
having_clause = value.contains_aggregate
Expand Down
15 changes: 15 additions & 0 deletions tests/regressiontests/model_regress/tests.py
Expand Up @@ -164,8 +164,23 @@ def test_timezones(self):
1
)


class ModelValidationTest(TestCase):
def test_pk_validation(self):
one = NonAutoPK.objects.create(name="one")
again = NonAutoPK(name="one")
self.assertRaises(ValidationError, again.validate_unique)


class EvaluateMethodTest(TestCase):
"""
Regression test for #13640: cannot filter by objects with 'evaluate' attr
"""

def test_model_with_evaluate_method(self):
"""
Ensures that you can filter by objects that have an 'evaluate' attr
"""
dept = Department.objects.create(pk=1, name='abc')
dept.evaluate = 'abc'
Worker.objects.filter(department=dept)

0 comments on commit b835301

Please sign in to comment.