Extending two related queries on same model in Django -
consider django model forms connection between 2 other model instances:
class user(models.model): pass class meeting(models.model): user_a = models.foreignkey(user, related_name='a_meetings') user_b = models.foreignkey(user, related_name='b_meetings')
now suppose want define function returns of user
s meetings, regardless of if side a
or b
. naive implementation be:
class user(models.model): @property def meetings(self): return list(self.a_meetings.all()) + list(self.b_meetings.all())
what's 'right' way have function return matching queryset
instead of list? bonus points elegant solution doesn't use ugly q
query ;)
i think qs inevitable here.
the main principle these things start model want get: since want meetings, start there.
return meeting.objects.filter(q(user_a=self) | q(user_b=self))
Comments
Post a Comment