티스토리 뷰
Programming/Django
Cannot force both insert and updating in model saving 에러
prograsshopper_ 2021. 3. 12. 17:29원래 쓰던 테이블에 필드가 하나 더 있는 것이 좋을 것 같아서 필드를 추가하고, 들어온 값의 일부를 사용해서 해당 필드를 채우도록 save를 다음과 같이 오버라이딩했다.
def save(self, *args, **kwargs):
if not self.extension:
self.extension = str(self.file).split(".")[-1]
super(File, self).save(*args, *kwargs)
그리고 어드민에서 잘 동작하는 것 같아서 그냥 두고 잊어버리고 있었다.
(사실 테스트코드만 있었어도 해결가능하지만......ㅎ)
그러던 와중 앱 테스트 도중에 파일 업로드가 안된다는 얘기를 들었다.
에러 메세지는 다음과 같다.
ValueError: Cannot force both insert and updating in model saving.
뭐냐 이건...
이것저것 건드려보니까 에러 메세지가 조금 달라졌다.
This may be because you have a writable field on the serializer class
that is not a valid argument to `{...}.objects.create()`.
You may need to make the field read-only,
or override the {....}Serializer.create() method to handle this correctly.
음? 일부를 시리얼라이저에서 read_only로 바꾸란 뜻일까?
관련해서 구글링(참고링크)을 해본 후, 재시도해봤다.
안 된다.
다시 구글링...을 하려다가, insert와 update를 동시에 못한다는 식의 메세지가 최초 에러였는데, save를 오버라이딩한 잘못이 아닐까 하는 생각이 들었다. 지금 새로운 인스턴스를 만들때 입력받은 데이터를 시리얼라이저에 넣고, 해당 데이터가 유효하면 save()를 통해서 생성하는데 save가 동작할때 뭔가 꼬인 것 같다.
그럼 save 대신에 create를 오버라이딩해보면 어떨까 해서 로직은 그대로 둔 채 save에서 create로 수정해봤다.
잘 동작한다.
오버라이딩할때 가볍게 찾아보고 오버라이딩했는데, 장고 문서를 좀 더 살펴봐야겠다ㅠ 장고 하나 잘하기도 참 어려운듯..
반응형
'Programming > Django' 카테고리의 다른 글
장고에서 로깅하기 (Django Logging) (0) | 2021.05.13 |
---|---|
Django로 메일 보내기 (0) | 2021.05.12 |
Django admin - display, filter, search, action (0) | 2021.04.08 |
Models - ORM, Fields, Queryset, Migrations (0) | 2021.02.12 |
dispatch & decorator를 사용해서 유저 검사하기 (0) | 2020.11.18 |
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- 다시미분적분
- 싱가폴여행
- SQL기초구문
- 싱가포르
- 파고다강남후기
- udemy
- 머신러닝파워드애플리케이션
- askcompany
- 아토믹코틀린
- BookDiscussion
- 파고다갓생후기챌린지
- 혼자공부하는얄팍한코딩지식
- 해외여행
- Docker
- 파고다후기
- 동남아
- 그래프QL인액션
- 나는리뷰어다
- 개발자리뷰어
- 한빛출판사
- SRE를위한시스템설계와구축
- 싱가폴
- django
- Python
- Singapore
- 나는리뷰어다2022
- 리액트와함께장고시작하기
- 길벗출판사
- 유데미강의
- 한빛미디어
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함