如何在django中过滤不同的用户 [英] How can I filter distinct users in django
问题描述
我正在尝试构建一个消息传递应用。这是我的模型,
类消息(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)
这是我试过的,
data = Message.objects .filter(Q(sender = request.user)| Q(receiver = request.user))
在模板中,
{%abc in data%}
{{abc.receiver}}
{%endfor%}
在这里,我想过滤掉不同的接收器并根据request.user最近向谁发送新消息的事实重新排序(正如我们在社交媒体平台上看到的那样) 。我怎么能这样做?
从1个月开始我被这个代码绞死了,我会非常感谢每一个小小的帮助:)
我尝试过:
data = Message.objects.filter(Q(sender = request.user)| Q(receiver = request.user))。values('receiver')。distinct()。order_by()
我也试过,< br $>
data = Message.objects.filter(Q(sender = request.user)| Q(receiver = request.user))
receiver_list =
data.filter(sender = request.user).order_by('created_at')。distinct('receiver')
I'm trying to build a messaging app. Here's my model,
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)
This is what I tried in view,
data = Message.objects.filter(Q(sender=request.user) | Q(receiver=request.user))
In the template,
{% for abc in data %}
{{ abc.receiver }}
{% endfor %}
Here i wants to filter the distinct receivers and re-order them based upon the fact that to whom `request.user` sent new message recently (as we see on social media platforms). How can I do that?
I'm hanged with this code from 1 month, I will be very thankful with every little help :)
What I have tried:
data = Message.objects.filter(Q(sender=request.user) | Q(receiver=request.user)).values('receiver').distinct().order_by()
Also I tried,
data = Message.objects.filter(Q(sender=request.user) | Q(receiver=request.user))
receiver_list =
data.filter(sender=request.user).order_by('created_at').distinct('receiver')
推荐答案
在模板中,使用 if 条件检查您的接收者和发件人是否有特定消息。
类似
In the template, use an if condition that checks your receiver and sender for a particular message.
Something like
{% if abc.receiver == request.user %}
# this means that the current user is the receiver
{% endif %}
同样你应该能够做到这一点abc.sender。
您需要在上下文中(在您的视图中)传递当前登录的用户。
Similarly you should be able to do it for abc.sender.
You'll need to pass current logged in user in the context(in your view).
这篇关于如何在django中过滤不同的用户的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!