Поля DISTINCT ON не поддерживаются этим бэкэндом базы данных - PullRequest
0 голосов
/ 18 января 2019

Я использую различные, чтобы получить различные последние значения, но это дает мне ошибку:

Поля 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()

1 Ответ

0 голосов
/ 18 января 2019

distinct('field_name') не поддерживается в MySQL. Он поддерживает только distinct(). distinct('field_name') будет работать только на PostgresSQL . Для более подробной информации, пожалуйста, проверьте документацию .

Примеры (те, которые после первого будут работать только на 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')
   [...]
...