Фильтр модели django с использованием понимания словаря

У меня есть модель, называемая cards, которая содержит ряд элементов, которые я хочу перебирать в цикле. Поэтому я пытался использовать некоторое понимание словаря следующим образом:

cards = Card.objects.filter(device=device)
output = { c.id : [c.generateData(), c.sensor.getLatestTime()] for c in cards}

При выполнении этого кода он обрывается на операторе вывода со следующей ошибкой:

Значение QuerySet для точного поиска должно быть ограничено одним результатом используя нарезку.

Большинство ответов, которые я нашел для этой точной ошибки, были для случаев, когда кверисет путается с одним полем, как в 1, 2. Однако в моем случае я ожидаю и обрабатываю его как кверисет, проходя по нему циклом.

Я также видел похожий вопрос в здесь об использовании понимания словаря на моделях, однако, насколько я могу судить, мой формат почти такой же (Разве что список в качестве второго параметра как-то вызывает проблему?)

Edit: Я заметил, пытаясь проверить, где происходит ошибка, что даже простой цикл for, такой как:

for card in cards:

выдает ту же ошибку, похоже, что ошибка находится в строке:

cards = Card.objects.filter(device=device)

Честно говоря, это не имеет для меня особого смысла. Такое ощущение, что я забыл что-то фундаментальное, но пока не могу этого увидеть.

Выяснилось, что ошибка была очень глупой, в утверждении:

output = { c.id : [c.generateData(), c.sensor.getLatestTime()] for c in cards}

Ошибка возникала примерно здесь, заставляя меня думать, что проблема возникла в:

cards = Card.objects.filter(device=device)

Поскольку код сломался вокруг этой части, однако при дальнейшем рассмотрении, после замены этого утверждения на:

cards = Card.objects.all()

Решив проблему, я обнаружил, что ошибка возникала на параметрах фильтра, поскольку несколькими строками ранее я делал следующее:

device = Device.objects.filter(project__user=user,id=id)

попробовал использовать набор запросов во 2-м условии. Таким образом, заменив его на:

device = Device.objects.get(project__user=user,id=id)

решил мою проблему.

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