我正在使用distinct获取不同的最新值,但这给了我一个错误:
此数据库后端不支持DISTINCT ON字段
views.py
class ReportView(LoginRequiredMixin, generic.TemplateView):
template_name = 'admin/clock/report.html'
def get_context_data(self, **kwargs):
context = super(ReportView, self).get_context_data(**kwargs)
context['reports'] = TimesheetEntry.objects.filter(
timesheet_jobs__job_company = self.request.user.userprofile.user_company,
).distinct('timesheet_users')
return context
基本上我想在TimesheetEntry
模型上进行查询,其中将有user
的大量条目,这是User
内置模型中的外键。
所以我想查询不同的用户,以便显示该用户的最新条目。对于我来说,获取用户的最新信息非常重要。
models.py
class TimesheetEntry(models.Model):
timesheet_users = models.ForeignKey(User, on_delete=models.CASCADE,related_name='timesheet_users')
timesheet_jobs = models.ForeignKey(Jobs, on_delete=models.CASCADE,related_name='timesheet_jobs')
timesheet_clock_in_date = models.DateField()
timesheet_clock_in_time = models.TimeField()
答案 0 :(得分:1)
distinct('field_name')
。它仅支持distinct()
。 distinct('field_name')
仅适用于 PostgresSQL 。有关更多详细信息,请检查documentation。
示例(第一个示例之后的示例仅在PostgreSQL上有效):(从文档粘贴粘贴:)
>>> Author.objects.distinct()
[...]
>>> Entry.objects.order_by('pub_date').distinct('pub_date')
[...]
>>> Entry.objects.order_by('blog').distinct('blog')
[...]
>>> Entry.objects.order_by('author', 'pub_date').distinct('author', 'pub_date')
[...]
>>> Entry.objects.order_by('blog__name', 'mod_date').distinct('blog__name', 'mod_date')
[...]
>>> Entry.objects.order_by('author', 'pub_date').distinct('author')
[...]
答案 1 :(得分:0)
愿你应该这个
>>> queryset = TimesheetEntry.objects.distinct()
>>> context['reports'] = queryset .filter(timesheet_jobs__job_company = self.request.user.userprofile.user_company, )