Warm tip: This article is reproduced from serverfault.com, please click

python-是否可以在上下文中将值添加到for循环中?

(python - Is it possible to add values to context into a for loop?)

发布于 2020-11-28 01:55:02

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

    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返回正确的数据。我唯一需要做的就是将来自cCard的内容存储到context ['card_list']中,但是我所做的任何尝试都没有结果。

Questioner
Federico
Viewed
0
Willem Van Onsem 2020-11-28 09:59:59

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

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(column__board=self.object)
    print(context)
    return context

你可以使用两个连续的下划线(__“穿越”的关系就好了)看ForeignKeyManyToManyField