Фильтр просмотров Django DRF ManyToMany - PullRequest
0 голосов
/ 16 ноября 2018

Существует две модели: class User(Model) и

class Loan(Model):
    parents = models.ManyToManyField(User, related_name='parents', verbose_name='Родители') # .objects.all().filter(user_type=User.PARENT)
    children = models.ManyToManyField(User, related_name='children', verbose_name='Дети') #.objects.all().filter(user_type=User.CHILD)

и представление на основе DRF

class ChildrenViewset(viewsets.ModelViewSet):
    queryset = User.objects.all()

    def get_queryset(self):
        queryset = User.objects.all()
        # TODO here i need to write filter
        return queryset

Как отфильтровать набор запросов, чтобы выбрать всех дочерних элементов для определенного родителя?

У меня есть parent_identity (можно назвать id или pk)

Что я ожидаю увидеть:

queryset = User.objects.filter(children__loan_set__parent__identoty=parent_identity)
return queryset

1 Ответ

0 голосов
/ 16 ноября 2018

DONE

class ChildrenViewset(viewsets.ModelViewSet):
    queryset = auth_models.User.objects.all()
    serializer_class = auth_serializers.UserModelSerializer

    def get_queryset(self):
        queryset = auth_models.User.objects.all()

        parent_identity = self.request.query_params.get('parent', None)
        if parent_identity is not None:
            queryset = queryset.filter(
                Q(children__parents__identity=parent_identity) |
                Q(children__parents__email=parent_identity) |
                Q(children__parents__phone=parent_identity)
            )
        return queryset
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...