2017-05-07 8 views
0

私はこれらのモデルを使用している小さなプロジェクトでここで作業しています。現在認証されているユーザーがフォローしています。ValueError: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_user'ではなく' current_profile'という名前を付けると、エラーがもっと明確になるのでしょうか? –

答えて

0

これは簡単な問題です。プロファイルクラスはユーザークラスとは異なるため、プロファイルのインスタンスはユーザーのインスタンスとは異なります。

current_userの代わりにcurrent_user.userを使用する必要があります。

documentationを確認できます。

0

たぶん、このような何かをしようと、

Post.objects.filter(poster__id__in=current_user.following.all().values_list('id')) 
関連する問題