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
반응형
'Python > Django' 카테고리의 다른 글
Nginx Django static file 경로 설정하기 (0) | 2023.03.13 |
---|---|
Django Deployment with Nginx and Gunicorn (0) | 2023.03.12 |
Django: DB migrations 기록 지우기 (0) | 2023.03.10 |
Django Template: linebreaks vs linebreaksbr (0) | 2023.03.07 |
Django QuerySet, update objects (0) | 2023.02.26 |