我正在try 创建一个聊天API,我已经将消息模型构建为如下所示
class ChatMessage(models.Model):
user = models.ForeignKey(User, on_delete=models.SET_NULL, null=True, related_name="user")
sender = models.ForeignKey(User, on_delete=models.SET_NULL, null=True, related_name="sender")
reciever = models.ForeignKey(User, on_delete=models.SET_NULL, null=True, related_name="reciever")
message = models.CharField(max_length=10000000000)
is_read = models.BooleanField(default=False)
date = models.DateTimeField(auto_now_add=True)
现在,我正在try 编写API视图,以获取仅属于me和我正在聊天的person的所有消息.
让我详细说明一下:假设Destiny正在发送Sammy条短信,肯定会有很多消息在我(Destiny)和用户(Sammy)之间发送,所以我想要收到所有这些短信.
这就是我写下的观点,就是为了这样做
class GetMessages(generics.ListAPIView):
serializer_class = MessageSerializer
def get_queryset(self):
sender_id = self.kwargs['sender_id']
reciever_id = self.kwargs['reciever_id']
messages = ChatMessage.objects.filter(sender=sender_id, reciever=reciever_id)
return messages
URL
path("api/get-messages/<sender_id>/<reciever_id>/", views.GetMessages.as_view()),
这就是该视图返回的内容
## url - http://127.0.0.1:8000/api/get-messages/2/1/
[
{
"id": 2,
"sender": 2,
"reciever": 1,
"message": "Hey Destiny",
"is_read": false
}
]
如果我交换发送者id和接收者id,这是我得到的响应
# url - http://127.0.0.1:8000/api/get-messages/1/2/
[
{
"id": 1,
"sender": 1,
"reciever": 2,
"message": "Hello Sammy",
"is_read": false
},
{
"id": 3,
"sender": 1,
"reciever": 2,
"message": "This is another message for you sammy",
"is_read": false
}
]
我想要的是,当我在url中传入发送者的id(1)和接收者的id(2)时,我希望得到这样的响应,这就是这两个人已经进行的所有对话.
[
{
"id": 1,
"sender": 1,
"reciever": 2,
"message": "Hello Sammy",
"is_read": false
},
{
"id": 2,
"sender": 2,
"reciever": 1,
"message": "Hey Destiny",
"is_read": false
},
{
"id": 3,
"sender": 1,
"reciever": 2,
"message": "This is another message for you sammy",
"is_read": false
}
]