Ключ удален из исходного dict, несмотря на dict.copy()
Я недавно экспериментирую с сессионными переменными вместо того, чтобы писать все в base. Я создаю приложение для продаж на прилавке (переменные сессий автомобиль, пользователь, клиент). После сохранения заказа и его элементов в DB, я хочу сохранить клиента и очистить его связанные сессионные переменные связанного клиента из request.session['customers'] dict list.
def save_customer(request, store):
# save only customers != Client Magasin
customers = request.session['customers'].copy()
print(customers)
current_customer = list(filter(
lambda i: i['user'] == request.user.pk and i['store'] == store, customers))[0]
id = current_customer.pop('id')
nom = current_customer['nom']
if nom != 'Client Magasin':
current_customer.pop('store')
current_customer.pop('user')
customer = Customer.objects.create(**current_customer)
# return Customer for adding it to order
return customer
else:
# return Client Magasin
return Customer.objects.get(pk=1)
Когда я распечатываю request.session['customers'], я вижу ключи ID, STORE и USER. Но после выполнения лямбды эти ключи удаляются из исходного request.session['customers']
Я знаю это, потому что далее в моем коде я хочу снова отфильтровать этот список
def remove_same_customer(request):
customers_list = request.session['customers'].copy()
print(customers_list)
# new_customers = list(filter(
# lambda i: i['store'] != request.session['cart_warehouse'] and i['user'] !=
request.user, customers_list))
# request.session['customers'] = new_customers
# request.session.modified = True
Я закомментировал 4 последние строки, потому что они вызывают ошибку, поскольку ключи ID, STORE и USER не могут быть найдены. Это подтверждается использованием print(customers_list)
что я делаю не так? PS : не знаю, полезен ли dict.copy() в моем случае, но я попробовал это после того, как ошибка была обнаружена.