1

我正在使用原始查询,因为我想选择基于单个不同列的唯一行 - Django

context['reports'] =  TimesheetEntry.objects.raw('SELECT * FROM timesheet_entry t1 INNER JOIN ( SELECT timesheet_users_id, MAX(id) AS latest_id FROM timesheet_entry GROUP BY timesheet_users_id ) t2 ON t1.timesheet_users_id = t2.timesheet_users_id AND t1.id = t2.latest_id WHERE timesheet_is_running=False')
context['reports'] = context['reports'].exclude(pk=36)

它给了我错误-

AttributeError - 'RawQuerySet' object has no attribute 'exclude'

我该如何排除?或如何将以上转换RawQuerySetQuerySet

4

1 回答 1

0

您应该将另一个子句直接添加到原始查询中。

就像是:

context['reports'] =  TimesheetEntry.objects.raw('SELECT * FROM timesheet_entry t1 INNER JOIN ( SELECT timesheet_users_id, MAX(id) AS latest_id FROM timesheet_entry GROUP BY timesheet_users_id ) t2 ON t1.timesheet_users_id = t2.timesheet_users_id AND t1.id = t2.latest_id WHERE timesheet_is_running=False 
AND t1.id <> 36')
于 2021-11-22T10:09:41.397 回答