Один ключ словаря переопределяет другие. Доступ к словарю осуществляется по определению

Я столкнулся со странной проблемой, когда 21 ключ словаря работает правильно. Однако, когда добавляется 22-й ключ, все перестает работать правильно. Обращение к словарю происходит как при определении, так и при немедленном обращении к нему всегда с 22-м ключом (независимо от того, правильный он или нет). Словарь находится внутри функционального представления Django, целью которого является редактирование форм Product и сохранение их в цитате. Ниже приведен шаблон и url, а также представление функции.

{% url 'quote:edit_line_item' pk=quote.pk product_name=item.product_name line_item=item.pk%}

re_path(r'quote/(?P<pk>\d+)/edit-line-item/(?P<product_name>.+)/(?P<line_item>\d+)/$', views.add_to_quote, name = 'edit_line_item')

def add_to_quote(request,*args,**kwargs):
    pk = kwargs['pk']


    if kwargs.get('line_item') == None:

        product_template_form = 'quote/product_template_form.html'

        form_dict = {
            'FilterProduct':FilterProductForm(request.POST,initial={'quote':pk},user=request.user),
            'Product1': Product1Form(request.POST,initial={'quote':pk},
            'Product2': Product2Form(request.POST,initial={'quote':pk},
            ...
            'Product21':Product21Form(request.POST,initial={'quote':pk},
        }
        form = form_dict[request.POST['product_name']]
    else:
        obj = get_object_or_404(model_dict[kwargs['product_name']],
         pk=kwargs['line_item'])
        print(f"object {obj}")
        print(kwargs)

        product_template_form = 'quote/edit_product_form.html'

        print("here")
        form_dict = {
            "FilterProduct": FilterProductForm(request.POST or None,
            initial={'quote':kwargs['pk']}, instance = obj,user=request.user),
            # "FilterProduct": print("why am I printing?"),
            'Product1': Product1Form(request.POST or None,
            initial={'quote':kwargs['pk']}, instance = obj),
            'Product2': Product2Form(request.POST or None,
            initial={'quote':kwargs['pk']}, instance = obj),
          ...
            'Product21': Product21Form(request.POST or None,
            initial={'quote':kwargs['pk']}, instance = obj),
    

        }

        print("there")
        print(kwargs.get('product_name'))
        form = form_dict[str(kwargs.get('product_name'))]
        ...continues from here with logic

    return render(request, product_template_form, {'form':form})

Поскольку предоставлен карг line_item, выполняется оператор else функции. У меня есть операторы печати выше и ниже form_dict в качестве средства отслеживания ошибки. Ниже показан вывод, когда product_name является Product1. Оператор печати there никогда не выполняется, потому что к form_dict неправильно обращаются с помощью клавиши FilterProduct.

object Product1 object (139)
{'pk': '44', 'product_name': 'Product1', 'line_item': '139'}
here
Internal Server Error: /quote/44/edit-line-item/Product1/139/
Traceback (most recent call last):
  File "/home/jackson/.venvs/configurator/lib/python3.8/site-packages/django/core/handlers/exception.py", line 47, in inner
    response = get_response(request)
  File "/home/jackson/.venvs/configurator/lib/python3.8/site-packages/django/core/handlers/base.py", line 181, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/home/jackson/.venvs/configurator/lib/python3.8/site-packages/django/contrib/auth/decorators.py", line 21, in _wrapped_view
    return view_func(request, *args, **kwargs)
  File "/home/jackson/projects/configurator/quote/views.py", line 328, in add_to_quote
    "FilterProduct": FilterProductForm(request.POST or None,
TypeError: __init__() got an unexpected keyword argument 'user'

Если я не комментирую ключ FilterProduct и использую ключ, который в данный момент закомментирован, функция успешно работает, отображая форму Product1 с данными экземпляра. Я могу сказать, что к ключу FilterProduct все еще обращаются при определении, из следующего вывода:

object Product1 object (139)
{'pk': '44', 'product_name': 'Product1', 'line_item': '139'}
here
why am I printing?
there
Product1
[21/Oct/2021 19:56:58] "GET /quote/44/edit-line-item/Product1/139/ HTTP/1.1" 200 5078

Опять же, если ключ FilterProduct добавить в ключ form_dict, то он сразу становится доступным при определении, и я не знаю, почему. Любое понимание было бы очень признательно.

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