Django, доступ к объектам верхнего родителя от родителей второго уровня от ребенка с реалтаизацией многие-ко-многим
У меня есть установка, в которой есть эти модели.
Устройства Слайдшоу Слайды
Устройство может иметь только одно слайд-шоу Слайд-шоу может быть назначено многим устройствам Слайд может быть назначен многим слайд-шоу
Теперь я пытаюсь пройти путь вверх по дереву, чтобы получить все устройства, имеющие все слайдшоу, к которым принадлежит слайд.
Допустим, у меня есть объект 'slide 1'. Существует ли запрос, который мог бы получить все устройства на вершине дерева?
В настоящее время я обхожу вершину так, как мне нужно послать сигнал 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)
