我有模特
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)
用户是django用户模型 我试图结合这里设置的两个queryset(obj1和obj2)但是它不起作用。我可以通过使用别名在sql中做同样的事情。但是在这里我不知道该怎么做。
执行上述代码时出现此错误:
TypeError:合并'QuerySet'类在每种情况下都必须包含相同的值
请帮助完成此任务
答案 0 :(得分:0)
我认为你应该做的事情是'或'在过滤功能中:
from django.db.models import Q
friendship = FriendsWith.objects.filter(Q(username=request.user)|Q(fusername=request.user))
friendship
是一个查询集,其中当前用户可以是username
或fusername
。您可以使用该集来获取应该成为他们朋友的替代用户。
另一种解决方案是使用django-friendship。它是一个很好的django库,用于处理用户之间的友情和朋友请求等。