Мне нужно получить сообщение или комментарий о пользователе в определенной группе.Django ORM аннотация с фильтром
Итак, я использую этот код. Это работает хорошо.
if model == 'post':
return _group.fbuser_set.filter(posts__group=_group).annotate(count=Count('posts')).order_by('-count')
else:
return _group.fbuser_set.filter(comments__group=_group).annotate(count=Count('comments')).order_by(
'-count')
И я хочу получить как комментарий, так и комментарий о пользователе в конкретной группе.
Итак, я делаю этот код
_group.user_set.filter(posts__group=_group, comments__group=_group) \
.annotate(p_count=Count('posts'), c_count=Count('comments'))
и этот код.
_group.user_set.filter(posts__group=_group) \
.annotate(p_count=Count('posts')).filter(comments__group=_group) \
.annotate(c_count=Count('comments'))
Но оба они не работают. Это выкл.
Что я могу сделать для получения учёта в определенной группе?
Если мне нужно использовать raw sql, как я могу сделать sql о той же функции?
Попробуйте добавить 'distinct = True' к вашим подсчетам следующим образом:' .annotate (p_count = Count ('posts', distinct = True)) ' – Leistungsabfall
@Leistungsabfall, Спасибо! Это работает хорошо!! – egaoneko