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

У меня есть код чата, в котором я хочу отображать и предлагать только тех пользователей, с которыми уже была переписка, то есть как входящие, так и исходящие сообщения, а не всех зарегистрированных пользователей

html код:

views.py:

def get_messages(request):
    chats = chatMessages.objects.filter(Q(id__gt=request.POST['last_id']),Q(user_from=request.user.id, user_to=request.POST['chat_id']) | Q(user_from=request.POST['chat_id'], user_to=request.user.id))
    new_msgs = []
    for chat in list(chats):
        data = {}
        data['id'] = chat.id
        data['user_from'] = chat.user_from.id
        data['user_to'] = chat.user_to.id
        data['message'] = chat.message
        data['date_created'] = chat.date_created.strftime("%b-%d-%Y %H:%M")
        print(data)
        new_msgs.append(data)
    return HttpResponse(json.dumps(new_msgs), content_type="application/json")

def send_chat(request):
    resp = {}
    User = get_user_model()
    if request.method == 'POST':
        post =request.POST
        
        u_from = UserModel.objects.get(id=post['user_from'])
        u_to = UserModel.objects.get(id=post['user_to'])
        insert = chatMessages(user_from=u_from,user_to=u_to,message=post['message'])
        try:
            insert.save()
            resp['status'] = 'success'
        except Exception as ex:
            resp['status'] = 'failed'
            resp['mesg'] = ex
    else:
        resp['status'] = 'failed'

    return HttpResponse(json.dumps(resp), content_type="application/json")

models.py:

class chatMessages(models.Model):
    user_from = models.ForeignKey(User,
        on_delete=models.CASCADE,related_name="+")
    user_to = models.ForeignKey(User,
        on_delete=models.CASCADE,related_name="+")
    message = models.TextField()
    date_created = models.DateTimeField(default=timezone.now)

    def __str__(self):
        return self.message

my chat

пожалуйста, подскажите, как это можно реализовать. Я не совсем понимаю, как задать условие для проверки сообщений

Вероятно, сначала нужно изменить связанное имя в модели:

class chatMessages(models.Model):
    user_from = models.ForeignKey(User,
        on_delete=models.CASCADE,related_name="sent")
    user_to = models.ForeignKey(User,
        on_delete=models.CASCADE,related_name="received")
    message = models.TextField()
    date_created = models.DateTimeField(default=timezone.now)

    def __str__(self):
        return self.message

А затем, чтобы получить все сообщения, которые получил пользователь:

messages = request.user.received.all()

(Или User.objects.get(id=my_user_id).received.all())

Чтобы получить всех пользователей, с которыми пользователь переписывался, вы можете сделать следующее:

pk_list = messages.values(user_from__pk).distinct()
correspondents = get_user_model().objects.filter(pk__in=list(pk_list))

Список:

В ваших представлениях вы получаете модель пользователя.

User = get_user_model()

Но вы ничего не делаете с ней в этом представлении:

def send_chat(request):
Вернуться на верх