Как получить отдельные данные в кверисете Django views?

У меня есть следующие записи в таблице dataa

Я хочу получить все sender_id, где receiver_id равно 15, и все receiver_id, где sender_id равно 15. Как я могу определить queryset.

Я пробовал следующее

class ContactListAPI(GenericAPIView, ListModelMixin ):
    def get_queryset(self):
        return Messages.objects.filter(Q(sender=15) | Q(receiver=15))
    serializer_class = ContactsSerializer
    permission_classes = (AllowAny,)

    def get(self, request , *args, **kwargs):
        return self.list(request, *args, **kwargs)

но это дает мне все записи, но мне нужны только отличительные значения.

просто я хочу получить все идентификаторы получателей, где отправитель равен 15, и все идентификаторы отправителей, где получатель равен 15. здесь мой ожидаемый результат 11,17. Скажите, как я могу получить их, определив набор запросов.

Похоже, что вы ищете метод distinct(). см. документы Django

Messages.objects.filter(Q(sender=15) | Q(receiver=15)).distinct('sender', 'receiver')
Вернуться на верх