Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何过滤私人用户对用户的交互?_Python_Django_Django Filter - Fatal编程技术网

Python 如何过滤私人用户对用户的交互?

Python 如何过滤私人用户对用户的交互?,python,django,django-filter,Python,Django,Django Filter,我正在创建一个私有的用户对用户聊天系统,目前我正在通过用户配置文件中的视图显示所有对象,如下所示user=userComment.objects.all() 问题是,每个人都可以阅读每个人的聊天信息,我想对其进行过滤,以便只有收件人和发件人可以阅读他们发送给对方的信息 如果像这样过滤:userComment.objects.filter(sender=request.user)则只显示已发送的消息 如果我这样过滤:userComment.objects.filter(recipient=requ

我正在创建一个私有的用户对用户聊天系统,目前我正在通过用户配置文件中的视图显示所有对象,如下所示
user=userComment.objects.all()

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

如果像这样过滤:
userComment.objects.filter(sender=request.user)
则只显示已发送的消息

如果我这样过滤:
userComment.objects.filter(recipient=request.user)
则只显示收到的消息

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

为什么要将其过滤为一个变量?所以它可以是这样的:

而不是像这样:

型号.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)
template/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 %}

问题是另一个用户仍然可以看到收件人和发件人之间的聊天信息。

使用
Q
进行OR查询

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

这有一个问题,我希望对象按datetime(sent_at)排序,您发送给我的示例作为我添加的第二个图像示例进行排序,我是否应该使用order_by,但如何使用?只需按正常方式将其添加到末尾。检查更新,问题是,另一个用户仍然可以看到收件人和发件人之间的聊天信息。/comment/那么您当然只需要在该视图中检查username是否为当前用户。
from django.db.models import Q
UserComment.objects.filter(Q(sender=request.user) | Q(receiver=request.user))