Невозможность упорядочить по нескольким столбцам и разные ответы на один и тот же запрос в оболочке django и через ListAPIView

Я пишу простую функцию чата для приложения бронирования, где customer может отправлять сообщения owner и owner может отвечать на эти сообщения. Также owner может быть и customer.

Я храню эти сообщения в таблице, которая создается этой моделью -

class CustomerOwnerMessages(BaseModel):

    message = models.CharField(max_length=255, blank=False, null=False)
    customer = models.ForeignKey(
        User,
        on_delete=models.PROTECT,
        blank=False,
        null=False,
        related_name="message_from_customer",
    )
    owner = models.ForeignKey(
        User,
        on_delete=models.PROTECT,
        blank=False,
        null=False,
        related_name="message_to_owner",
    )

Моя задача - получить список customers тех, кто до сих пор обменивался сообщениями с вошедшим owner.

  1. Допустим, pk этой owner будет 1. Поэтому сначала я планировал получить объект модели User следующим образом -
owner = User.objects.get(pk=1)
  1. Затем я решил получить все сообщения этого пользователя, отправленные или полученные в качестве владельца, из модели CustomerOwnerMessages. Обратите внимание, что я определил related_name для каждого внешнего ключа в той же модели.
messages = owner.message_to_owner.filter()
  1. У меня есть список всех экземпляров messages, отправленных этим owner. Теперь мне нужен список всех уникальных случаев, в которых комбинация (owner, customer) не повторяется. Поэтому я решил упорядочить сообщения следующим образом -
active_chats = messages.order_by('owner', 'customer')

Проблема 1 -

Проблема с этими строками кода в том, что если я запускаю это через оболочку Django, то я получаю набор запросов в качестве ответа, но ответ не упорядочен по ("customer", "owner") вместо этого я получаю все экземпляры CustomerOwnerMessages, где owner=1.

Задача 2 -

Затем я также запускаю это через ListAPIView -

 def get_queryset(self):
        return User.objects.filter(pk=self.request.user.id).message_from_customer.filter().order_by("customer", "owner")

В ответе на этот запрос ListAPIView ошибка -

'QuerySet' object has no attribute 'message_from_customer'

На правильном ли я пути? Где я ошибся, чтобы увидеть проблемы с плотиной?

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