python - 如何过滤私有(private)用户与用户的交互?

标签 python django django-filter

我正在创建一个私有(private)用户到用户的聊天系统,现在我通过用户个人资料中的 View 显示所有对象,如下所示 user = userComment.objects.all().

问题是每个人都可以阅读每个人的聊天消息,我想对其进行过滤,以便只有收件人和发件人可以阅读他们彼此发送的消息。

如果像这样过滤它:userComment.objects.filter(sender=request.user)那么只会显示发送的消息。

如果我像这样过滤它:userComment.objects.filter(recipient=request.user)那么只会显示收到的消息。

我想对其进行过滤,以便只有收件人和发件人可以阅读他们的聊天内容。

为什么我想将其过滤到一个变量中?所以它看起来像这样:enter image description here

并且不是这样:

enter image description here

models.py

class userChat(models.Model):
    sender = models.ForeignKey(User, related_name="sender")
    receiver = models.ForeignKey(User, blank=True, null=True, related_name="receiver")
    sent_at = models.DateTimeField(auto_now_add=True)
    comment = models.TextField(max_length=255, null=True)

    def __str__(self):
        return str(self.sent_at)

模板/file.html

{% for user in users %}
    {% if user.client == request.user %}
            <li style="text-align:left; background:yellow;">
                <p>from {{ user.client }} to <strong>{{ user.worker }} </strong> | {{ user.sent_at }}</p>
                <p>{{ user.comment }}</p>
            </li>
        {% else %}
            <li style="text-align:right; background:#eaeaea;">
                <p>from {{ user.client }} to <strong>{{ user.worker }}</strong> | {{ user.sent_at }}</p>
                <p>{{ user.comment }}</p>
            </li>
        {% endif %}
{% endfor %}
<小时/>

更新:按照丹尼尔·罗斯曼的例子,我尝试过这个:

filter(Q(recipient=request.user) | Q(sender=request.user)).order_by('sent_at')

问题是其他用户仍然可以看到收件人和发件人之间的聊天消息。

最佳答案

使用Q进行OR查询。

from django.db.models import Q
UserComment.objects.filter(Q(sender=request.user) | Q(receiver=request.user))

关于python - 如何过滤私有(private)用户与用户的交互?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41514380/

相关文章:

python - 日期时间图表的 gnuplot-py 错误

python - django-oraclepool 未找到异常

django-rest-framework - 可以通过 django-filter URL 解析器做一个 `in` `lookup_type` 吗?

python - ValueError : too many values to unpack, 将列表作为 *args 传递

使用 F 和 Q 表达式过滤 Django 模型

python - 如何使用 Flask-SQLAlchemy 仅选择数据库中的某些列?

python - 如何从一列中的所有数字中删除\xa3?

python - 将 pandas 数据框乘以固定行数

django - 访问Django模型字段标签和help_text

python - 我可以使用 mixin 组合基于 Create 和 List 类的通用 View 吗?