モデルに関連するモデルに基づいて、モデルをどのようにフィルタリングできますか?以下の例...これは機能しますが、これはDBに2回ヒットし、かなりエレガントではないと思います。クエリセットを使用して直接実行する方法はありますか?どういうわけかでselect_related()
、しかしそれを理解することができませんでした。QuerySet
のを返したいProject
。
from django.db import models
class Person(models.Model):
pass
class Project(models.Model):
pass
class Action(models.Model):
person = models.ForeignKey(Person)
project = models.ForeignKey(Project)
# Better way to do this?
def projects_by_person(person):
actions = Action.objects.filter(person=person)
project_ids = actions.values_list('project')
return Project.objects.filter(id__in=project_ids)