Django фильтр с родственным именем

У меня есть модель, которая выглядит следующим образом

clas AModel(models.Model):
  name = models.CharField(max_lentght=100)
  reply = models.ForeignKey('SomeModel')

class BModel(models.Model):
  a_model = models.ForeignKey(AModel, related_name='amodel')
  user = models.ForeignKey(User)
  tag = models.ForeignKey(TagModel)

У меня есть queryset из AModelViewSet тогда

def get_queryset(self):
  q = super().get_queryset()
  q = q.filter(amodel__user_id=self.request.user)
  
  if self.request.GET.get('tag'):
     q = q.filter(amodel__tag_id=self.request.GET.get('tag'))
  retrun q.distinct()

в этом наборе запросов после if self.request.GET.get('tag') фильтр не работает он возвращает все объекты, которые имеют различные теги, но не возвращает конкретные объекты, связанные с текущим пользователем но если я делаю запрос follow

  if self.request.GET.get('tag'):
     q = q.filter(amodel__tag_id=self.request.GET.get('tag'), amodel__user=self.request.user)
  retrun q.distinct()

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

может ли кто-нибудь помочь мне понять это, пожалуйста? спасибо заранее

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