繁体   English   中英

在Django中加入queryset

[英]join queryset in django

我有一个模特

class FriendsWith(models.Model):
    username = models.ForeignKey(User,on_delete=models.CASCADE)
    fusername =models.ForeignKey(User,on_delete=models.CASCADE,related_name='fusername')  
    time = models.DateTimeField(auto_now_add=True)
    confirm_request = models.SmallIntegerField(default=1)
    blocked_status = models.IntegerField(default=0)

我想搜索当前登录用户的所有朋友。所以,我这样做

obj1=FriendsWith.objects.filter(username=request.user).select_related('fusername')
obj2=FriendsWith.objects.filter(fusername=request.user).values('username')
obj=obj1 | obj2
friendslist=User.objects.filter(username__in=obj)

在User是django User模型的地方,我试图将此处设置的两个queryset(obj1和obj2)组合在一起,但是它不起作用。我可以使用别名在sql中做同样的事情。但是在这里我不确定该怎么做。

执行上述代码时出现此错误:

TypeError:在每种情况下,合并“ QuerySet”类都必须包含相同的值

请协助完成这项任务

我认为您应该在过滤器功能中执行“或”操作:

from django.db.models import Q
friendship = FriendsWith.objects.filter(Q(username=request.user)|Q(fusername=request.user))

friendship是一个查询集,当前用户可以是usernamefusername 您可以使用该设置来获取应该成为其朋友的替代用户。

另一个解决方案是使用django-friendship 这是一个很好的django库,用于处理用户之间的友谊和朋友请求等。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM