Drf> Что я могу сделать для использования аннотации из модели M2M
У меня есть 4 таких модели.
модель пользователя
class User(model.Model):
name=models.ChaField()
дневниковая модель
class Diary():
title=charfield
author=Foreignkey("user.User")
рекомендуемая_модель_дневника
class RecommendDiary():
section=Foreignkey("recommend.RecommendSection")
diary=Foreignkey("diary.Diary")
рекомендовать_модель_раздела
class RecommendSection():
section=charfield
diaries=M2M("diary.Diary", through=RecommendSection)
когда я даю пользователям рекомендацию, я хочу сделать аннотацию, которая исключает заблокированных пользователей. Заданный мне набор запросов выглядит следующим образом
queryset=Recommend.objects.filter(start time-end time)
Итак, я могу взять объект данного кверисета и проверить множество дневников, связанных с этим объектом, следующим образом.
obj=queryset.first()
diary_queryset=obj.diaries.all()
(I made custom manager for this)
Проверив, что пользователь запроса заблокирован от пользователя, который написал этот дневник, я могу исключить его из набора запросов.
diary_list=[diary for diary in diary_queryset if diary.id not in block_list]
но я получил отфильтрованный список, а не Queryset. и это даже не RecommendSection queryset.
могу ли я получить исключенный набор запросов RecommendSection от заблокированного пользователя, используя annotate или что-то другое?
I wanna exclude block user list from RecommendSection ex)
queryset=RecommandSection.objects.exclude(diary_id__in=block_user)
(не работает, кстати)
- I wanna use .annotate if able
спасибо за помощь.