Фильтрация сообщения для одного пользователя
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: