Mahyar
Mahyar

Reputation: 796

django orm filter from other queryset

i m on my mini project and have a problem. this is my models

class Post(models.Model):
    user = models.ForeignKey(User, related_name='poster_user', db_index=True)
    post_content = models.CharField(max_length=500, blank=True, null=True)
    post_date = models.DateTimeField(default=datetime_now)
    numberof_comment = models.BigIntegerField(default=0)
    is_deleted = models.BooleanField(default=False)

class Follower(models.Model):
    user = models.ForeignKey(User, related_name='user', db_index=True)
    isFriendToUser = models.ForeignKey(User, related_name='isFriendToUser', db_index=True)
    is_deleted = models.BooleanField(default=False)
    lastModifiedDate = models.DateTimeField(default=datetime_now)

when i have

followinguser = Follower.objects.all().filter(user=user, is_deleted=False)

and use it to

Post.objects.filter(user=followinguser.isFriendToUser, is_deleted=False)

it returned error Cannot use QuerySet for "follower": Use a QuerySet for "User". i want to have query like this:

select * from Post 
where 
    user in (select isFriendToUser from Follower where user='someuserobject' and is_deleted = 0)
    AND
    is_deleted = 0

Upvotes: 0

Views: 309

Answers (1)

Ozgur Vatansever
Ozgur Vatansever

Reputation: 52103

If I understand correctly what you want to do:

Post.objects.filter(user__in=followinguser.values_list("isFriendToUser", flat=True), is_deleted=False)

Upvotes: 2

Related Questions