【问题标题】:Why is my private user to user chat showing in other user's chat profile?为什么我的私人用户对用户的聊天会显示在其他用户的聊天资料中?
【发布时间】:2017-05-21 20:02:42
【问题描述】:

我正在为用户聊天创建一个私人用户,我遇到了一个问题,当一个用户与另一个用户发送消息时,这个相同的聊天出现在其他用户的聊天中。

假设用户 A 联系了用户 B,用户 C 看不到用户 A 和 B 之间发送的消息,但用户 A 和 B 可以看到他们在用户 C 的聊天资料中与他们无关的讨论。

问题:我怎样才能让它只在与发件人和收件人有关时才显示聊天?

聊天资料显示在 url 页面上,如下所示:/c/<recipient username>/

如下图所示,一切都是正确的,因为 url 用户名与发件人或收件人用户名匹配。

正如您在另一张图片中看到的那样,url 用户名与发送或收件人用户名无关。

这是我的模板文件

{% 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 %}

views.py

def comment(request, username):
    username = User.objects.get(username=username)
    user = userComment.objects.filter(Q(sender=request.user) | Q(recipient=request.user)).order_by('sent_at')

    context = {'users': user, 'url_username': username}
    return render(request, 'add_comment.html', context)

models.py

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

我不知道它与视图或模板有关,有什么建议吗?

【问题讨论】:

  • 您还没有显示执行查询的视图
  • @e4c5 我该怎么办?
  • 您正在使用request.user 查询cmets,并且您在URL 中传递的用户名与查询无关。您在测试时使用相同的帐户登录吗?
  • @maverick 是的,我使用同一个帐户登录,但问题是我不应该在“huriddin1”聊天的个人资料上看到我和“huriddin52”之间的聊天
  • 那么您想要那些由登录用户发布并由 URL 中的收件人接收或由 URL 中的收件人发送并由登录用户接收的 cmets?我说的对吗?

标签: python django


【解决方案1】:

我猜你需要查询

users = userComment.objects.filter(Q(Q(sender=request.user) & Q(recipient=username)) | Q(Q(sender=username) & Q(recipient=request.user))).order_by('sent_at')

【讨论】:

  • 感激不尽,我已经坚持了好几天了。
猜你喜欢
  • 1970-01-01
  • 2019-11-17
  • 1970-01-01
  • 1970-01-01
  • 2019-11-29
  • 1970-01-01
  • 1970-01-01
  • 2022-01-20
  • 1970-01-01
相关资源
最近更新 更多