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 или что-то другое?

  1. I wanna exclude block user list from RecommendSection ex)

    queryset=RecommandSection.objects.exclude(diary_id__in=block_user)

(не работает, кстати)

  1. I wanna use .annotate if able

спасибо за помощь.

Вернуться на верх