我正在尝试在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向某人发送消息并且该人回复它,它返回相同的用户“Twice”。
我该如何解决这个问题?谢谢 。 。 。
使用以下查询:
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})
希望它会奏效。