#27990 closed Bug (invalid)
QuerySet.count() raises ValueError when QuerySet.union() is used
Reported by: | kapil garg | Owned by: | nobody |
---|---|---|---|
Component: | Database layer (models, ORM) | Version: | 1.10 |
Severity: | Normal | Keywords: | |
Cc: | Triage Stage: | Unreviewed | |
Has patch: | no | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
When we get objects from a model and do union then the resulted QuerySet.count() raises ValueError due to the presence of Non-Numeric first Field.
Eg.
class SomeModel(models.Model): name = models.CharField(max_length=10, default='example') >>> from bug.models import SomeModel >>> e1 = SomeModel(name='current') >>> e1.save() >>> e2 = SomeModel() >>> e2.save() >>> qs1 = SomeModel.objects.filter(name__startswith='ex').only('name') >>> qs2 = SomeModel.objects.filter(name__startswith='cu').only('name') >>> qs = qs1.union(qs2) >>> print(qs.count()) >>> #raises ValueError : invalid literal for int() with base 10
If the first field contained in queryset is numeric then this error is not raised.
Eg. remove .only() method above on both querysets and then .count() with return correct result.
Change History (2)
comment:1 by , 8 years ago
Resolution: | → invalid |
---|---|
Status: | new → closed |
comment:2 by , 8 years ago
I opened #27995 to raise a descriptive error on unsupported operations following QuerySet.union()
.
Note:
See TracTickets
for help on using tickets.
I found the reason. union() does not support count().