我有一个类似的追随者模型:
class Follow(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='fuser') #who is following
follow = models.ForeignKey(User, on_delete=models.CASCADE, related_name='ffollow') #who is followed
然后我想吸引用户关注。
案例1:我想找到user_john和user_mark都在关注的用户。
users = User.objects.filter(Q(this_user_is_followed_by=user_john)
& Q(this_user_is_followed_by=user_mark))
情况2:想查找紧随user_john之后但紧随user_mark之后的用户。
users = User.objects.filter(Q(there_user_is_followed_by=user_john)
& Q(these_user_are_following=user_mark))
该如何进行过滤?太难了。
users = User.objects.filter(Q(ffollow__user=user)
& Q(ffollow__user=user_who_read))
将回答案例1。
但是我不确定。
答案 0 :(得分:5)
案例1:我想找到
user_john
和user_mark
都在关注的用户。
第一种情况应使用两个过滤器解决,因为否则,您将过滤与 same 相关的对象:
User.objects.filter(fuser__follow=user_john).filter(fuser__follow=user_mark)
情况2:想查找紧随
user_john
却紧追user_mark
的用户。
User.objects.filter(fuser__follow=user_john, ffollow__user=user_mark)