#35958 closed Bug (worksforme)
QuerySet.distinct() crashes with "SELECT DISTINCT ON expressions must match initial ORDER BY expressions"
Reported by: | adofosam | Owned by: | |
---|---|---|---|
Component: | Database layer (models, ORM) | Version: | 5.1 |
Severity: | Normal | Keywords: | distinct |
Cc: | Triage Stage: | Unreviewed | |
Has patch: | no | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description (last modified by )
When I attempt to run the following code, I get an error.
Code:
user = User.objects.get(id=user_id) list = List.objects.filter(user=user).order_by('email').distinct('email')
Error (Context: my app is called "lists"):
django.db.utils.ProgrammingError: SELECT DISTINCT ON expressions must match initial ORDER BY expressions LINE 1: SELECT COUNT(*) FROM (SELECT DISTINCT ON ("lists_list"...
I'm using a PostgreSQL database and my model is:
class EventList(models.Model): id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False, unique=True) user= models.ForeignKey(User, on_delete=models.CASCADE) email = models.EmailField()
Change History (2)
comment:1 by , 2 weeks ago
Description: | modified (diff) |
---|---|
Summary: | Issue with the distinct() function when specifying a field to run it on → QuerySet.distinct() crashes with "SELECT DISTINCT ON expressions must match initial ORDER BY expressions" |
comment:2 by , 2 weeks ago
Resolution: | → worksforme |
---|---|
Status: | new → closed |
Note:
See TracTickets
for help on using tickets.
I cannot reproduce the models you've provided (assuming you meant
EventList
in your report and notList
)the resulting SQL
Something appears to be missing from your report and judging from the error it has something to do with the
order_by
specified prior todistinct
.