Reputation: 1103
My models.py is:
User(models.Model):
people = models.ManyToManyField('self', through='Friend', symmetrical=False)
Friend(models.Model):
from_user = models.ForeignKey('User', related_name='friends')
to_user = models.ForeignKey('User', related_name='friends_of')
accepted = models.BooleanField(default=False)
To get a queryset of User
instance of all Friend
objects related to user_instance
, I'm currently doing something like:
user_instance.people.all() | user_instance.user_set.all()
This works, but what I want is that of accepted = True
only. Something like:
user_instance.people.filter(people__accepted=True) | user_instance.user_set.filter(people__accepted=True)
Note: Renamed friendship to people
Thanks
Upvotes: 1
Views: 305
Reputation: 1638
Try this:
user_instance.people.filter(friends_of__accepted=True) | user_instance.user_set.filter(friends__accepted=True)
The point is, related_name
should be prepended to __accepted
instead of the field name people
.
Upvotes: 1