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()
работает отлично, но я не понимаю, почему второй метод работает, а первый нет. в первой строке я фильтрую по пользователю и если тег будет указан снова, я буду фильтровать снова с возвращенным запросом, но это не работает
может ли кто-нибудь помочь мне понять это, пожалуйста? спасибо заранее