Фильтрация сообщения для одного пользователя

Inbox = Messages.objects.filter(Q(sender=request.user)&Q(senderDeleted=False) | Q(receiver=request.user)&Q(receiverDeleted=False)).order_by("-time", "read")
context['Inbox'] = Inbox
unreadMessagesCount = Messages.objects.filter(Q(receiver=request.user) & Q(read=False)&Q(receiverDeleted=False)).count()
context['unreadMessagesCount'] = unreadMessagesCount

Я пытаюсь отфильтровать сообщения по тому, кто не хочет, чтобы они больше отображались. Логика такова: если senderDeleted или receiverDeleted равно True, то пусть сообщения больше не появляются. В настоящее время сообщения остаются на странице до тех пор, пока оба не нажмут кнопку "Удалить" или отправитель удаляемого сообщения не будет текущим пользователем, вошедшим в систему. Я бы хотел, чтобы это удаляло сообщения из поля зрения одного пользователя и позволяло другим пользователям просматривать их. При щелчке на элементах он также переключает поля на значение True.

@login_required
@require_http_methods(["POST"])
def delete(request,messageID):
    #Only remove the message if both people want it removed or if the send and receiver are the same person
    data_to_be_deleted = Messages.objects.get(id = messageID)
    
    if data_to_be_deleted.sender == data_to_be_deleted.receiver:
        data_to_be_deleted.delete()
        return redirect('messagesInbox')
    else:
        if data_to_be_deleted.sender==request.user:
            data_to_be_deleted.senderDeleted=True
            data_to_be_deleted.save()
        else:
            data_to_be_deleted.receiverDeleted=True
            data_to_be_deleted.save()

    data_to_be_deleted = Messages.objects.get(id = messageID)
    if data_to_be_deleted.senderDeleted and data_to_be_deleted.receiverDeleted:
        data_to_be_deleted.delete()
    return redirect('messagesInbox')

models.py:

class Messages(models.Model):
    sender = models.ForeignKey(Profile,related_name='sender',on_delete=models.CASCADE)
    senderDeleted = models.BooleanField(default=False)
    receiver = models.ForeignKey(Profile,related_name='receiver',on_delete=models.CASCADE)
    receiverDeleted = models.BooleanField(default=False)
    subject = models.CharField(default='',max_length=100)
    text = models.CharField(default='',max_length=4096)
    time = models.DateTimeField(auto_now_add=True)
    read = models.BooleanField(default=False)
    parent = models.ForeignKey('self', on_delete=models.CASCADE, null=True, blank=True, related_name='contact_parent')

    def get_children(self):
        return Messages.objects.filter(parent=self)

    def __str__(self):
        return '{} to {} :{}'.format(self.sender,self.receiver,self.text)

html:

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