Как вернуть все сообщения между двумя пользователями - Django/Python/Chat Building

Я создаю простой чат с помощью Django-Rest-Framework на Python. Я создал GET/POST методы для пользователей и чата.

МОДЕЛЬ

from django.db import models
from django.db.models.base import Model

class User(models.Model):

    class Meta:

        db_table = 'user'

    user_firstname = models.CharField(max_length=200)
    user_lastname = models.CharField(max_length=200)

class Chat(models.Model):

    class Meta:

        db_table = 'chat'
    
    from_message = models.ForeignKey(User, on_delete=models.CASCADE, related_name='+')
    message = models.CharField(max_length=1000)
    to_message = models.ForeignKey(User, on_delete=models.CASCADE, related_name='+')

СЕРИАЛИЗАТОРЫ

from rest_framework import serializers
from .models import User, Chat

class UserSerializer(serializers.ModelSerializer):

    class Meta:

        model = User
        fields = '__all__'

class ChatSerializer(serializers.ModelSerializer):

    class Meta:

        model = Chat
        fields = '__all__'

from django.urls.conf import re_path
from . import views

urlpatterns = [
    re_path(r'^users/$', views.UserList.as_view(), name='users-list'),
    re_path(r'^chat/$', views.ChatList.as_view(), name='chat-get-list'),
    re_path(r'^chat/(?P<from_id>.+)&(?P<to_id>.+)/$', views.ChatList.as_view(), name='chat-list'),
]

ПРОСМОТРОВ

from rest_framework import generics, serializers
from .models import User, Chat
from .serializers import ChatSerializer, UserSerializer

class UserList(generics.ListCreateAPIView):
    queryset = User.objects.all()
    serializer_class = UserSerializer

    def get_queryset(self):

        queryset = User.objects.all()
        return queryset

class ChatList(generics.ListCreateAPIView):
    queryset = Chat.objects.all()
    serializer_class = ChatSerializer

    def get_queryset(self):
        queryset = Chat.objects.all()
        from_id = self.request.query_params.get('from_id')
        to_id = self.request.query_params.get('to_id')

        if from_id is not None and to_id is not None:
            queryset = Chat.objects.filter(from_message=from_id,to_message=to_id)
 #Probably my error is here, because I'm specifying the messages. I need to add something like 'to_message=to_id or from_id
        
        return queryset

ПРОБЛЕМА: Когда я отправляю сообщение, я сообщаю from_id, to_id и само сообщение, например:

{
    "from_id":1,
    "message":"I'm sending a message to you",
    "to_id":2
},
{
    "from_id":2,
    "message":"I'm replying your message",
    "to_id":1
}

Но когда я пытаюсь получить все сообщения между двумя людьми, я получаю только то, что было отправлено от_id к to_id, но мне также нужно вернуть то, что было отвечено, в этом примере сообщение "Я отвечаю на ваше сообщение".

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

В таком случае, как вернуть все сообщения между двумя пользователями?

Чтобы решить эту проблему, просто добавьте в views:

queryset = Chat.objects.filter(from_message=from_id or to_id,to_message=to_id or from_id)
Вернуться на верх