Django Эффективный поиск цепочки один ко многим - PullRequest
0 голосов
/ 18 декабря 2018

У меня есть следующая структура данных:

class File(models.Model):
    dataset = models.ForeignKey(Dataset)

class Dataset(models.Model):
    mission = models.ForeignKey(Mission)

class Mission(models.Model):
    project = models.ForeignKey(Project)

class Project(models.Model):
    pass

Я хотел бы эффективно решить, содержит ли проект какие-либо файлы.Начиная с одного Project объекта, как мне получить список всех связанных файлов?

Я понимаю, project.mission_set.all() даст мне первый слой, но я не знаю, как эффективно связатьзапросы.

1 Ответ

0 голосов
/ 18 декабря 2018

Если вы хотите узнать, какие Files экземпляры связаны с my_project экземпляром, вы можете получить к нему доступ следующим образом:

my_project = Project.objects.create()

File.objects.filter(dataset__mission__project=my_project)

Чтобы узнать количество, которое вы можете сделать:

File.objects.filter(dataset__mission__project=project).count()
...