본문 바로가기

Python/Django

Python, Django: request QueryDict 다루기 # AttributeError: This QueryDict instance is immutable

728x90
반응형

Django 프로젝트에서,

front에서 요청받은 request.POST의 query dictionary를 unpack해서

data를 생성할 때 (예: MODEL.objects.create(**request.POST))

request.POST에서 특정값만 없애고 unpack을 해서 사용하려는 경우, 다음과 같이 시도해보면

not_null_list = ['name','amount', 'period']
missing_item = next((item for item in not_null_list if not request.POST.get(item)), None)

del request.POST['action']
Fruit.objects.create(**request.POST)

raise AttributeError("This QueryDict instance is immutable")

위와 같은 에러가 발생합니다.

 

Django에서 HTTP request의 data는 변형이 불가능하기 때문에, 아래와 같이 다른 reference로 copy를 해주고 이용해야 합니다.

not_null_list = ['name','amount', 'period']
data = request.POST.copy()
missing_item = next((item for item in not_null_list if not data.get(item)), None)

del data['action']
Fruit.objects.create(**data)

 

728x90
반응형