2017-05-07 74 views
0

我正在使用这些模型在这里的一个小项目,我试图找出一种方法来获取一组与所有相关的帖子当前经过身份验证的用户正在关注的用户ValueError:不能使用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

你有没有试过'poster__profile__in'? – itzMEonTV

+0

我想知道如果你把变量命名为'current_profile'而不是'current_user',错误会不会更清楚? –

回答

0

这是一个简单的问题:Profile类与User类不同,因此Profile'instance与User的实例不同。

代替使用current_user您需要使用current_user.user。您可以查看documentation

0

也许尝试这样的事情,

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