我试图在django中创建一个消息传递应用程序,但我无法正确地重新订购用户
这是模特,
class Message(models.Model):
sender = models.ForeignKey(User, related_name="sender")
receiver = models.ForeignKey(User, related_name="receiver")
msg_content = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)
这是视图,
def message(request):
users = Message.objects.filter(Q(sender=request.user) | Q(receiver=request.user)).values('sender__first_name', 'receiver__first_name', 'receiver__id', 'sender__id').annotate(Max('id')).order_by('-id__max')
return render(request, 'chat/users.html', {'users': users})
这是我在模板中尝试的内容,
{% for user in users %}
{% if user.sender__id != request.user.id %}
{{ user.sender__first_name }}
{% else %}
{{ user.receiver__first_name }}
{% endif %}
{% endfor %}
这段代码看起来工作得很好,但它返回了相同的用户"两次"只要request.user向某人发送消息&那个人回复它。
如何解决此问题?谢谢 。 。
答案 0 :(得分:1)
使用以下查询:
def message(request):
users = Message.objects.filter(Q(sender=request.user) | Q(receiver=request.user)).values('sender__first_name', 'receiver__first_name', 'receiver__id', 'sender__id').annotate(Max('id', distinct = True)).order_by('-id__max')
return render(request, 'chat/users.html', {'users': users})
希望它能奏效。