Django, доступ к объектам верхнего родителя от родителей второго уровня от ребенка с реалтаизацией многие-ко-многим

У меня есть установка, в которой есть эти модели.

Устройства Слайдшоу Слайды

Устройство может иметь только одно слайд-шоу Слайд-шоу может быть назначено многим устройствам Слайд может быть назначен многим слайд-шоу

Теперь я пытаюсь пройти путь вверх по дереву, чтобы получить все устройства, имеющие все слайдшоу, к которым принадлежит слайд.

Допустим, у меня есть объект 'slide 1'. Существует ли запрос, который мог бы получить все устройства на вершине дерева?

enter image description here

В настоящее время я обхожу вершину так, как мне нужно послать сигнал post_save, это работает как есть, но я чувствую, что это плохой способ сделать это. и даже мне трудно следовать ему. Я использую связанные имена, чтобы подняться вверх по дереву.

related_name=devices related_name=slideshows

Я надеялся сделать что-то простое, например instance.slideshows.devices.all(), но это приводит к ошибкам связанного менеджера или даже instance.slideshows.all().devices.all()

    slideshows = instance.slideshows.all()

    related_devices = []
    for slideshow in slideshows:
        devices = slideshow.devices.all()
        related_devices = list(chain(related_devices, devices))

    for device in related_devices:
        post_save.send(Device, instance=device)

Ну, думаю, это было проще, чем я думал!

devices = Device.objects.filter(slideshow__slides=instance)

Вернуться на верх