현재 상황 에러가 났다. 분명히 objects.get(파라미터1, 파라미터2)를 통해 쿼리셋을 찾고 있나 없냐에 따라 예외처리문으로 분기하여 로직을 만들었다. try: exist = AverageLog.objects.get(average_time=self.time, sensor_id=self.sensor_id) AverageLog.objects.update(average_masked=masked_avg, average_unmasked=unmasked_avg) except: AverageLog.objects.create(average_time=self.time, sensor_id=self.sensor_id, average_masked=masked_avg, average_unmasked=unmasked_avg) 내가 로컬에서 샘플 데이터를 넣었을때는 잘 들어가는 것 같아 보였지만, 실제 seeder로 데이터를 넣어 보니까 문제가 발생한 것이다. 이렇게 들어간 Log 데이터에서 파생되는 데이터 부분에서 문제가 생겼는데(시간 부분은 xx55 부분 이후로 끊어야 하는데 아직 seeder에서 해결하는 중), average_masked, average_unmasked가 똑같은 값으로 나오는 문제가 발생한 것이다. 문제 해결 아마도 try문으로 분기를 해둬서 그런지 전부다 except로 넘어가는 것 같다. 동일한 sensor_id, time 기준으로는 row가 하나만 있고 값만 업데이트가 되어야 하는데, 이 부분에서 문제가 생긴 것으로 파악이 된다. exist = AverageLog.objects.filter(average_time=self.time, sensor_id=self.sensor_id) if exist: exist.update(average_masked=masked_avg, average_unmasked=unmasked_avg) else: AverageLog.objects.create(average_time=self.time, sensor_id=self.sensor_id, average_masked=masked_avg, average_unmasked=unmasked_avg) 이런식으로 분기를 바꿔주고 기존에 Log model보다 AverageLog model이 아래쪽에 있는 부분이 문제가 될 것도 같아 위치를 바꿔주었다. 해당 부분 최종 코드는 여기서 확인 가능하다. - https://github.com/Team-Mask-On/Mask_On/commit/45feca54c7deaf7241d2624da4151953f931adbc
objects.get 과 objects.filter 차이
그동안 저작권에 대해 너무 안일하게 생각했던 것 같다.
유료 강의를 보면서 정리했던 글을, 저작권자의 입장을 생각없이 멋대로 포스팅을 했던 것 같다.
앞으로는 최대한 내가 짠 코드, 내가 생산하는 콘텐츠 위주로 작성하고자 한다.
(만약 그렇지 않다면 출처는 더 자세히 남기고자 한다)
이번해 상반기에 5주 동안 타 대학교 학생들과 연합하여 2021 Silicon Valley Online Internship 프로그램을 진행한 바 있다.
나는 그때 라즈베리파이를 주로 담당하고 백엔드를 보조했는데 그때 생겼던 문제로 인해 알게 된 부분이다.
(다시 코드를 보니까 뭔가 부끄럽다.......)
현재 상황
문제 해결
'기술개발 > Django' 카테고리의 다른 글