В моем приложении пользователь может отправлять сообщение в потоке, создавая новый поток или может сообщать существующий поток. Предположим, что пользователь хочет удалить сообщение из определенного потока, возможно, я удалю сообщение. Но я просто хочу удалить сообщение для этого пользователя, а не для других пользователей этого потока. Чтобы сообщение отображалось только другим пользователям, другим пользователям, которые его удалили. Как мне это сделать?django - удаление объекта для определенного пользователя из группы пользователей
models.py:
class Thread(models.Model):
user = models.ManyToManyField(User)
class Message(models.Model):
thread = models.ForeignKey(Thread)
sent_date = models.DateTimeField(default=datetime.now)
body = models.TextField()
user = models.ForeignKey(User)
Edit:
message.html:
<div id="conversation">
{% for message in messages %}
{% if message|is_visible:request.user %}
<div class="messages">
<p>{{message.body}}</p>
<p>{{message.sent_date}}</p>
<p>-{{message.user}}</p>
<hr>
</div>
{% else %}
<div class="messages">
<p>You have deleted this message.</p>
</div>
{% endif %}
{% endfor %}
</div>
Edit:
templatetag:
from django import template
register = template.Library()
@register.filter
def is_visible(message, user):
"""Check the user's visibility of the message."""
return not HideMessage.objects.filter(message=message, user=user).exists()
Do, я создаю новую модель класса, чтобы это удержать? – Aamu
да, см. Обновление – ptr
Большое вам спасибо! Но я не так хорошо знаком с тегами шаблонов ... Не могли бы вы любезно показать мне, как это будет. Спасибо. – Aamu