diff --git a/django/db/models/sql/query.py b/django/db/models/sql/query.py
index dde1494..f50c219 100644
a
|
b
|
class Query(object):
|
1015 | 1015 | |
1016 | 1016 | # Process the join list to see if we can remove any inner joins from |
1017 | 1017 | # the far end (fewer tables in a query is better). |
1018 | | col, alias, join_list = self.trim_joins(target, join_list, last, trim) |
| 1018 | if (lookup_type == 'isnull' and value is False and not negate and |
| 1019 | len(join_list) > 1): |
| 1020 | col = target.column |
| 1021 | alias = join_list[-1] |
| 1022 | else: |
| 1023 | col, alias, join_list = self.trim_joins(target, join_list, last, trim) |
1019 | 1024 | |
1020 | 1025 | if connector == OR: |
1021 | 1026 | # Some joins may need to be promoted when adding a new filter to a |
diff --git a/tests/regressiontests/model_inheritance_regress/models.py b/tests/regressiontests/model_inheritance_regress/models.py
index c669b23..c3a8c07 100644
a
|
b
|
import datetime
|
6 | 6 | |
7 | 7 | from django.db import models |
8 | 8 | |
9 | | # Python 2.3 doesn't have sorted() |
10 | | try: |
11 | | sorted |
12 | | except NameError: |
13 | | from django.utils.itercompat import sorted |
14 | 9 | |
15 | 10 | class Place(models.Model): |
16 | 11 | name = models.CharField(max_length=50) |
… |
… |
AttributeError: 'Person' object has no attribute 'messybachelorparty_set'
|
385 | 380 | >>> p4.bachelorparty_set.all() |
386 | 381 | [<BachelorParty: Bachelor party for Bob>, <BachelorParty: Bachelor party for Dave>] |
387 | 382 | |
388 | | """} |
| 383 | # This works |
| 384 | >>> Place.objects.exclude(restaurant=None) |
| 385 | [<Place: the place>] |
389 | 386 | |
| 387 | # ... and this doesn't. |
| 388 | >>> Place.objects.filter(restaurant__isnull=False) |
| 389 | [<Place: the place>] |
| 390 | """} |