2016-02-22 2 views
1

У меня есть запрос, как это:аннотирования запроса Django для всех пользователей в панели администратора

user.ihaveinvited.all().filter(current_status='passive').values('id').distinct() 

, чтобы получить все различные пользователи с определенным статусом. Я хочу применить это к чему-то вроде:

def get_queryset(self, request): 
    qs = super(UserAdmin, self).get_queryset(request) 
    qs = qs.annotate(uniq_passive_invites=ALLUSERS.ihaveinvited.all().filter(current_status='passive').values('id').distinct() 

так что вопрос выполняет этот запрос для всех пользователей в качестве набора запросов?

ответ

1

Я взглянул на другой question you posted, и они казались близкими родственниками. Добавление счетчика с фильтром требует немного больше работы, но это может быть достигнуто.

def get_queryset(self, request): 
    qs = super(UserAdmin, self).get_queryset(request) 
    qs = qs.annotate(count=Sum(
     Case(
      When(ihaveinvited__invitee__current_status='passive', then=1), 
      default=0, 
      output_field=models.IntegerField() 
     ) 
    )) 
    return qs 
+0

Просьба оставить комментарий о том, работает ли этот ответ на вас, а если нет, добавьте ошибки в свой комментарий (или отредактируйте вопрос). –

+0

жаль, что меня не было, я очень ценю вашу помощь. Я не осознавал силу админ-панели Django, и ваши ответы помогли разблокировать некоторые новые идеи. Я обязательно отвечу вам, как только я приеду на работу завтра и подтвержу ваш ответ. – Rob

+0

Я получаю ошибку 'Поля отношения не поддерживают вложенные запросы' – Rob

Смежные вопросы