我有一个在Django开发的基于web的聊天应用程序。人们可以在里面组成自己的聊天小组,邀请其他人,在上面聊天。在
我想隔离最近在线的所有用户:(I)已经收到某个群组的邀请,或者(ii)已经在同一个群组中至少参与过一次(即,回复了)。注意,user
是一个普通的django.contrib.auth
user
。在
为了达到这个目的,我写了:
online_invited_replied_users = User.objects.filter(id__in=recently_online,(Q()|Q()))
假设recently_online
公式正确。这两个Q对象应该是什么?在
第一个Q()
应该指invitees
,第二个应该指向至少回复过一次的用户。在这里,我似乎遇到了编写代码的障碍,无法在这里建立一个全面、高效的数据库查询。请指教!在
相关车型有:
^{pr2}$注意:请随意询问更多信息;我知道我可能遗漏了一些内容。
对于已被邀请加入组
group
的用户,请向后按GroupInvite.invitee
外键。在您选择的相关名称
invitee
,实际上没有意义,因为它链接到的是组邀请,而不是用户。也许“群组邀请”会更好。在对于已经回复的用户,请向后按
^{pr2}$Reply.writer
外键。在在本例中是
reply
。因为你还没有指定一个相关的名字。在请注意,您当前的伪代码
将给出错误“关键字arg后的非关键字arg”。在
可以通过将非关键字参数移到关键字参数之前来解决此问题
或者把它们放在单独的过滤器中:
最后,请注意,您可能需要在查询集中使用
distinct()
,否则用户可能会出现两次。在相关问题 更多 >
编程相关推荐