[Django] #30270: .all() for related manager always returns empty list

15 views
Skip to first unread message

Django

unread,
Mar 19, 2019, 8:51:20 PM3/19/19
to django-...@googlegroups.com
#30270: .all() for related manager always returns empty list
-------------------------------------+-------------------------------------
Reporter: Victor | Owner: nobody
Porton |
Type: Bug | Status: new
Component: Database | Version: 2.1
layer (models, ORM) |
Severity: Release | Keywords:
blocker |
Triage Stage: | Has patch: 0
Unreviewed |
Needs documentation: 0 | Needs tests: 0
Patch needs improvement: 0 | Easy pickings: 0
UI/UX: 0 |
-------------------------------------+-------------------------------------
`.all()` for related manager always (at least in my case) returns empty
list. This seems an big error or at least a wrongly documented or
undocumented behavior.

It is demonstrated by the attached small test project.

The most relevant code fragment is:
```
holder = Holder.objects.get(pk=1)
self.assertEqual(holder.items.all().count(), 2, 'Correct objects
count')
```

Django 2.1.7

--
Ticket URL: <https://code.djangoproject.com/ticket/30270>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

Django

unread,
Mar 19, 2019, 8:51:53 PM3/19/19
to django-...@googlegroups.com
#30270: .all() for related manager always returns empty list
-------------------------------------+-------------------------------------
Reporter: Victor Porton | Owner: nobody
Type: Bug | Status: new
Component: Database layer | Version: 2.1
(models, ORM) |
Severity: Release blocker | Resolution:
Keywords: | Triage Stage:
| Unreviewed
Has patch: 0 | Needs documentation: 0

Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by Victor Porton):

* Attachment "bug.tar.gz" added.

Small project to test for the bug

Django

unread,
Mar 19, 2019, 9:10:21 PM3/19/19
to django-...@googlegroups.com
#30270: .all() for related manager always returns empty list
-------------------------------------+-------------------------------------
Reporter: Victor Porton | Owner: nobody
Type: Bug | Status: closed

Component: Database layer | Version: 2.1
(models, ORM) |
Severity: Release blocker | Resolution: invalid
Keywords: | Triage Stage:
| Unreviewed
Has patch: 0 | Needs documentation: 0

Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by Tim Graham):

* status: new => closed
* resolution: => invalid


Comment:

I don't see an issue. `Item.objects.create(holder=holder)` populates the
foreign key relation, not the many-to-many relation which is what
`holder.items.count()` is querying. You could make the test case pass
like this (adding `holder.items.set([i1, i2])`):
{{{ #!python
class BugTestCase(TestCase):
def setUp(self):
holder = Holder.objects.create()
i1 = Item.objects.create(holder=holder)
i2 = Item.objects.create(holder=holder)
holder.items.set([i1, i2])

def test_bug(self):
"""Test bug"""


holder = Holder.objects.get(pk=1)
self.assertEqual(holder.items.all().count(), 2, 'Correct objects
count')
}}}

--
Ticket URL: <https://code.djangoproject.com/ticket/30270#comment:1>

Reply all
Reply to author
Forward
0 new messages