Альтернативный подход для получения значения «self» при использовании «queryset» вместо «def get_queryset (self)» - PullRequest
0 голосов
/ 20 апреля 2020

Обычный подход

def get_queryset(self):
    return Test.objects.values(
        'test_id', 'test__title').annotate(
        Count('test_id'),
        count=Sum(Case(When(~Q(user=self.request.user), then='count'), default=0, output_field=IntegerField()))
        ).filter(test_id__count__gt=0)

При использовании вышеуказанного подхода функция сортировки столбцов не работает . Но, используя приведенный ниже подход с использованием набора запросов, функция сортировки работает, но не может получить значение self , поэтому я прокомментировал строку, содержащую self .

Текущий подход

queryset = Test.objects.values(
            'test_id', 'test__title').annotate(
            Count('test_id'),
            #count=Sum(Case(When(~Q(user=self.request.user), then='count'), default=0, output_field=IntegerField()))
            ).filter(test_id__count__gt=0)

На данный момент я прокомментировал строку, содержащую self ... # count = Sum ( ....

Было бы полезно, если бы я смог получить значение self при использовании queryset . Спасибо аванс.

...