Почему я продолжаю получать ключевую ошибку при назначении первого набора информации переменной данных контексту? - PullRequest
1 голос
/ 18 мая 2019

Продолжайте получать keyerror при попытке добавить словарь в список в контекстной переменной для get_context_data для django.

      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'

1 Ответ

1 голос
/ 18 мая 2019

Почему KeyError?

В вашем цикле for вы присваиваете info диктовку ключу с именем data, который не является ключом, принадлежащим context.

Итак, создайте list внутри context dict as,

context['data'] = []

, а затем добавить в этот список.


Полный пример кода

def get_serializer_context(self):
    context = super().get_serializer_context()
    <b>context['data'] = []</b>
    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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...