ValueError:不能将Queryset用于"":使用Queryset for""

时间:2017-05-07 03:54:46

标签: django django-models

我正在使用这些模型处理一个小项目,并且我试图找到一种方法来获取与当前经过身份验证的用户所关注的用户相关联的所有帖子的集合。

但我一直在接受:

  

不能将QuerySet用于"个人资料":为"用户"使用QuerySet。

class Profile(models.Model):
    user = models.OneToOneField(User)
    isInstructor = models.BooleanField(default=False)
    isTutor = models.BooleanField(default=False)
    isStudent = models.BooleanField(default=False)
    isAdmin = models.BooleanField(default=False)
    following = models.ManyToManyField('self', related_name = "followers", blank=True, symmetrical=False)
    profile_image = ImageField(upload_to=get_image_path, blank=True, null=True)

class Post(models.Model):
    title = models.CharField(max_length=100)
    topic = models.CharField(max_length=50)
    description = models.CharField(max_length=1200)
    poster = models.ForeignKey(User, related_name="posts")
    likes = models.IntegerField(default=0)
    created = models.DateTimeField(auto_now_add=True)
    tags = models.ManyToManyField(Tag, blank=True, related_name="posts")

    def __str__(self):
        return self.title

这就是让我错误的原因。

current_user = Profile.objects.get(user = self.request.user)
Post.objects.filter(poster__in = current_user.following.all())

我搜索了一下,发现我必须使用__in运算符,只要你想按照一系列事情进行过滤。但我一直得到同样的错误。任何帮助解释错误意味着什么以及我可以做些什么来解决它将非常感激。

1 个答案:

答案 0 :(得分:1)

也许尝试这样的事情,

Post.objects.filter(poster__id__in=current_user.following.all().values_list('id'))