如何在django中过滤不同的用户 [英] How can I filter distinct users in django

查看:71
本文介绍了如何在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆