python - 是否可以将值添加到 for 循环中?
问题描述
我有一个 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'],但我所做的一切尝试都是空的。
解决方案
请不要这样过滤。这将产生n+1 个查询,每个查询一个Column
。您可以使用以下命令检索Card
s 的最后一个:
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
您可以使用两个连续的下划线 ( __
) 来“透视”关系,例如 a ForeignKey
、ManyToManyField
等。
推荐阅读
- python - 相关模型 Django 的随机默认值
- python - 找到从顶部(或任意索引)开始的字典的*有序*交集的有效方法?
- ajax - Spring Validator + Ajax 显示 bindingResultErrors
- snowflake-cloud-data-platform - 如何在雪花中使用 parse_xml 忽略损坏的 xml 行
- watson-studio - 在 Watson Studio 中使用变量查询 Bigquery
- git - 有没有一种简单的方法可以在 git 中压缩许多提交?
- devops - 如果有凭证助手,Nomad 无法提取其他图像
- javascript - 如何在反应中使用错误边界?
- swift - 如何在另一个视图中更改类的布尔实例?
- snowflake-cloud-data-platform - 数据市场 - 启用“获取数据”按钮