KeyError: 'fields', но ключ 'fields' работает в одно и то же время

Это довольно странно: print wint ex_pur['fields'] работает, и в то же время у меня есть KeyError: 'fields' abote this print(). Помогите, пожалуйста, понять, что я делаю не так. Спасибо!

        ...
        try:
            existed_purchases_queryset = Purchases.objects.filter(name__in=purchases_names, list_id=list_id)
            existed_purchases = serializers.serialize('python', existed_purchases_queryset)
            response["existed"] = existed_purchases
            print(f"----------------\n{existed_purchases = }\n----------------")
            existed_purchases_names = [pur['fields']['name'] for pur in existed_purchases]
        except Purchases.DoesNotExist:
            print("Все позиции новые.")
        for purchase in purchases:
            print(f"{type(existed_purchases[0]) = }")
            purchases_serializer = PurchaseAddSerializer(data=purchase)
            do = False
            if purchase['name'] in existed_purchases_names:
                for ex_pur in existed_purchases:
                    print(f"----------------\n{('description' in **ex_pur['fields']**.keys()) = }\n----------------")
                    if ex_pur['fields']['name'] == purchase['name']:
                        ...
----------------
('description' in ex_pur['fields'].keys()) = True
----------------
----------------
('description' in ex_pur['fields'].keys()) = True
----------------
----------------
('description' in ex_pur['fields'].keys()) = True
----------------
Internal Server Error: /purchases/add/
Traceback (most recent call last):
  File "C:\Users\lars5\OneDrive\Programming\Python\shopping_list_telegram_bo
t_02_django\.venv\Lib\site-packages\django\core\handlers\exception.py", line
 55, in inner
    response = get_response(request)
               ^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\lars5\OneDrive\Programming\Python\shopping_list_telegram_bo
t_02_django\.venv\Lib\site-packages\django\core\handlers\base.py", line 197,
 in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs) 
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 
  File "C:\Users\lars5\OneDrive\Programming\Python\shopping_list_telegram_bo
t_02_django\.venv\Lib\site-packages\django\views\decorators\csrf.py", line 6
5, in _view_wrapper
    return view_func(request, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\lars5\OneDrive\Programming\Python\shopping_list_telegram_bo
t_02_django\.venv\Lib\site-packages\django\views\generic\base.py", line 104,
 in view
    return self.dispatch(request, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\lars5\OneDrive\Programming\Python\shopping_list_telegram_bo
t_02_django\.venv\Lib\site-packages\rest_framework\views.py", line 509, in d
ispatch
    response = self.handle_exception(exc)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\lars5\OneDrive\Programming\Python\shopping_list_telegram_bo
t_02_django\.venv\Lib\site-packages\rest_framework\views.py", line 469, in h
andle_exception
    self.raise_uncaught_exception(exc)
  File "C:\Users\lars5\OneDrive\Programming\Python\shopping_list_telegram_bo
t_02_django\.venv\Lib\site-packages\rest_framework\views.py", line 480, in r
aise_uncaught_exception
    raise exc
  File "C:\Users\lars5\OneDrive\Programming\Python\shopping_list_telegram_bo
t_02_django\.venv\Lib\site-packages\rest_framework\views.py", line 506, in d
ispatch
    response = handler(request, *args, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\lars5\OneDrive\Programming\Python\shopping_list_telegram_bo
t_02_django\list\views.py", line 183, in post
    print(f"----------------\n{('description' in **ex_pur['fields']**.keys()) = 
}\n----------------")
                                                 ~~~~~~^^^^^^^^^^
**KeyError: 'fields'**
[03/Feb/2024 18:11:32] "POST /purchases/add/ HTTP/1.1" 500 99390

Попытались проверить типы: ex_pur - dict. Попытался проверить, есть ли "fields" в ex_pur.keys() - True. Пробовал спрашивать у второго пилота в разных вейсах - ничего полезного. Я не знаю, что делать дальше. Я уже потратил 2 часа на эту проблему...

Я разобрался! Я добавлял в список existed_purchases разные древовидные дикты, поэтому некоторые дикты в нем действительно не имели ключевых "полей", в чем и заключалась проблема. Я исправил это! Спасибо за помощь!

Вернуться на верх