I was using the PostgreSQL only feature of
distinct("col_1", "col_2") to weed out duplicate rows while also returning a few other non-distinct columns, say
col_4 in a QuerySet. When it came time to test this code is when I learned that this feature was not available in sqlite, which is the DB being used for testing currently.
I rewrote the query to use a plain
.distinct() and while the results are different, they are acceptable and possibly even better in my point of view so that isn’t my real issue.
Can anyone share a general way this could be done in Django? If a more concrete example is needed, I can whip one up (hopefully using the classic pizza restaurants).
I spent some time trying to figure out ways to duplicate this feature using other bits of the QuerySet API including subqueries with
Exists() because I had see #32682 (Deleting objects after searching related many to many field crashes the admin page) – Django and then also with a
FilteredRelation because I had seen this SELECT DISTINCT ON in PostgreSQL | Geeky Tidbits . I think the best I could do was to duplicate the results of using a plain
.distinct() so far.
If I continue, I’ll probably look at using
.extra() but that and
RawSQL feels like cheating.