Ram Rachum
Ram Rachum

Reputation: 88528

Complex query in Django ORM

I have a model Follow:

class Follow(BaseModel):

    follower = django.db.models.ForeignKey(
        'User',
        related_name='_follows_we_are_follower'
    )
    followee = django.db.models.ForeignKey(
        'User',
        related_name='_follows_we_are_followee'
    )
    datetime_canceled = django.db.models.DateTimeField(null=True, blank=True)

When I'm handling a user, how do I get all the users he's following? I assume I want something like "Give me all the users for which exists a Follow object with a datetime_canceled of None, and the follower is that user, and then for all those follows get me the users that are in the followee field." How do I write this in Django?

Upvotes: 3

Views: 83

Answers (2)

Daniel Roseman
Daniel Roseman

Reputation: 599490

my_user._follows_we_are_follower.filter(datetime_canceled=None)

Edit

User.objects.filter(_follows_we_are_followee__follower=my_user, _follows_we_are_followee__datetime_canceled=None)

Upvotes: 0

Laxmikant Ratnaparkhi
Laxmikant Ratnaparkhi

Reputation: 4993

I'm quite away from django now So, syntax would be wrong. But I guess you want something like this:

User.objects.filter(Follow_related_name__in = ['_follows_we_are_follower', ,'_follows_we_are_followee'], datetime_canceled__is_null =True)

Upvotes: 1

Related Questions