尝试将字典添加到django的get_context_data的上下文变量中的列表时,会遇到键盘错误。
def get_context_data(self, **kwargs):
context = super(AdminPlayersView, self).get_context_data(**kwargs)
context['form_add'] = self.get_form()
context['form_edit'] = self.get_form()
players = Players.objects.all().order_by("user__last_name")
context['data'] = []
for player in players:
info = {
'Name': player.full_name,
'DOB': player.user.dob,
'Gender': player.user.gender,
'Team': 'Something',
}
context['data'].append(info)
return context
这是我收到的错误消息,出于隐私原因,我仅更改了信息中的数据。
` __class__
<class 'Backend.views.AdminPlayersView'>
context
{'data': {}}
count 0
info {'DOB': '2019-01-01', 'Gender': 1, 'Name': 'Name', 'Team':
'Something'}
kwargs {}
player <Players: Players object (240)>
players
<QuerySet [<Players: Players object (240)>, <Players: Players object (13)>, <Players: Players object (46)>, <Players: Players object (217)>, <Players: Players object (96)>, <Players: Players object (301)>, <Players: Players object (481)>, <Players: Players object (201)>, <Players: Players object (48)>, <Players: Players object (129)>, <Players: Players object (152)>, <Players: Players object (343)>, <Players: Players object (344)>, <Players: Players object (206)>, <Players: Players object (381)>, <Players: Players object (375)>, <Players: Players object (469)>, <Players: Players object (23)>, <Players: Players object (104)>, <Players: Players object (8)>, '...(remaining elements truncated)...']>
self
<Backend.views.AdminPlayersView object at 0x078118D0>
edit:
'Name'
Request Method: GET
Request URL: http://127.0.0.1:8000/admin//players
Django Version: 2.1.1
Exception Type: KeyError
Exception Value:
'Name'
答案 0 :(得分:1)
KeyError
?在您的for
循环中,您将 info
字典分配给名为 data
的键,该键不是键属于 context
。
因此,请在 list
字典中创建一个 context
,
context['data'] = []
,然后追加到此列表。
完整的代码示例
def get_serializer_context(self):
context = super().get_serializer_context()
context['data'] = []
players = Players.objects.all().order_by("user__last_name")
for player in players:
info = {
'Name': player.full_name,
'DOB': player.user.dob,
'Gender': player.user.gender,
'Team': 'Something',
}
context['data'].append(info)
return context