#16058 closed Bug (invalid)
Values_list with distinct return duplicate values
Reported by: | jonasnockert | Owned by: | nobody |
---|---|---|---|
Component: | Database layer (models, ORM) | Version: | 1.3 |
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
I'm using Django 1.3 with the following model (and as far as I can tell the generated sqlite3 schema looks okay as well):
class Article(Model): product_number = PositiveIntegerField(_("Product number"), db_index=True) product_variant = PositiveIntegerField(_("Variant"), db_index=True) ... class Meta: unique_together = (('product_number', 'product_variant'),) ordering = ['-date_added']
I'm making the following query which returns duplicate results:
>>> Article.objects.filter(product_number=99668).values_list('product_number', flat=True).distinct() [99668, 99668]
It looks like a bug from here but I'm also a bit sceptical since other people seem to be using this query construct successfully.
Thanks!
Change History (3)
comment:1 by , 14 years ago
Resolution: | → invalid |
---|---|
Status: | new → closed |
comment:3 by , 13 years ago
You can use .sorted_by() for clear sorted meta oredering.
Ex:
>>> Article.objects.filter(product_number=99668).sorted_by().values_list('product_number', flat=True).distinct() [99668]
Note:
See TracTickets
for help on using tickets.
I suspect is is because the (default, implicit) ordering Article model queries have and/or the
unique_together
condition. You are seeing duplicate results because.distinct()
is acting on all the columns included in the low level SQL query.Take a look at:
.unique().values_list(...)
if possible)