是否可以将值添加到 context 到 for 循环中?

Is it possible to add values to context into a for loop?

我有一个 for 循环来迭代一个列表。 在每次迭代中,我都有不同的值,我想将此值添加到我的上下文中。 我正在尝试使用 context.update,但每次 returns 都是空上下文。

    def get_context_data(self, **kwargs):
        context = super(Board_dets_view, self).get_context_data(**kwargs)
        id_board = self.object.id
        context['column_list'] = Column.object.filter(board_id=id_board)

        clist = Column.object.values_list('id', flat=True).filter(board_id=id_board)
        cCard = Card.object
        print(clist)
        for i in range(0, clist.count()):
            print('i=%s',i)

            cCard = Card.object.filter(column_id = clist[i])
            print('cCard=%s',cCard)
            context.update({'card_list': cCard})

        print(context)
        return context

cCard returns 数据正确。 我唯一需要的是将来自 cCard 的内容存储到上下文 ['card_list'],但我所做的每一次尝试都是空结果。

不要那样过滤。这将产生 n+1 个查询,每个 Column 个查询。您可以使用以下方法检索最后的 Cards:

def get_context_data(self, **kwargs):
    context = super(Board_dets_view, self).get_context_data(**kwargs)
    context['column_list'] = Column.object.filter(board=self.object)
    context['card_list'] = Card.object.filter(<b>column__board=self.object</b>)
    print(context)
    return context

您可以使用两个连续的下划线 (__) 来“透视”关系,例如 ForeignKeyManyToManyField