It is needed to attach to queryset results related object field.
Models:
class User(models.Model):
name = models.CharField(max_length=50)
friends = models.ManyToManyField('self', through='Membership',
blank=True, null=True, symmetrical=False)
class Membership(models.Model):
status = models.CharField(choices=SOME_CHOICES, max_length=50)
from_user = models.ForeignKey(User, related_name="member_from")
to_user = models.ForeignKey(User, related_name="member_to")
I can do this:
>>> User.objects.all().values('name', 'member_from__status')
[{'member_from__status': u'accepted', 'name': 'Ann'}, {'member_from__status': u'thinking', 'name': 'John'}]
'member_from__status'
contains information, that i need. But together with it, i need a model instance also.
What i want is:
>>> users_with_status = User.objects.all().do_something('member_from__status')
>>> users_with_status
[<User 1>, <User 2>]
>>> users_with_status[0] # <-- this is an object, so i can access to all its methods
Every instance in queryset has a 'member_from__status' field with corresponding value:
>>> users_with_status[0].member_from__status
u'accepted'
How this could be achieved?