TODO LIST
- is_complete : 완료 여부. default false
- completion_at : 할일 완료 시간.
models.py:
is_complete = models.BooleanField(default=False)
views.py:
class TodoDetailView(APIView):
permission_classes = [permissions.IsAuthenticated]
# 할일 수정
def put(self, request, todo_id, user_id):
user = get_object_or_404(User, id=user_id)
todo = Todo.objects.get(id=todo_id)
if request.user == user:
serializer = TodoCreateSerializer(todo, data=request.data)
if serializer.is_valid():
if request.data.get("is_complete") == True:
serializer.save(completion_at=timezone.now())
else:
serializer.save()
return Response(serializer.data, status=status.HTTP_200_OK)
else:
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
else:
return Response("권한이 없습니다!", status=status.HTTP_400_BAD_REQUEST)
- PUT 요청시, 할일 정보를 수정할 수 있어야 함
- 할일을 완료한 경우, is_complete를 True로 수정할 수 있어야 함
- 완료하지 않은 경우, False로 다시 수정할 수 있어야 함
처음에 "is_complete":"True" 등으로 넣으니 안 먹히더니 true / false 소문자로 하니 되더라
BooleanField에 null=True를 하려면 NullBooleanField를 사용해야 한다
'Django' 카테고리의 다른 글
Django admin 페이지 커스텀하기 (1) | 2023.05.23 |
---|---|
Django sqlite3 mysql로 변경하기 (11) | 2023.05.09 |
POETRY 가상환경 설정하기 (8) | 2023.04.24 |
파이썬 장고 실무 심화 5주차_테스트코드 TDD (1) | 2023.04.21 |
파이썬 장고 실무 심화 4주차_SerializerMethodField, StringRelatedField (0) | 2023.04.21 |