Opened 39 hours ago

Last modified 16 hours ago

#35958 closed Bug

QuerySet.distinct() crashes with "SELECT DISTINCT ON expressions must match initial ORDER BY expressions" — at Version 1

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 Tim Graham)

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 (1)

comment:1 by Tim Graham, 21 hours ago

Description: modified (diff)
Summary: Issue with the distinct() function when specifying a field to run it onQuerySet.distinct() crashes with "SELECT DISTINCT ON expressions must match initial ORDER BY expressions"
Note: See TracTickets for help on using tickets.
Back to Top