inbox 및 patch 를 수정해야한다.
이제 하위투두가 무조건 투두에 종속되어서,
투두 date 를 하위투두 date가 따라가도록 수정해야한다.
코드
def update(self, instance, validated_data):
# Update the fields as usual
for attr, value in validated_data.items():
if attr == "patch_rank":
# If the rank field is provided, update the rank field
rank = Todo.objects.get_update_rank(
instance, value.get("prev_id"), value.get("next_id")
)
setattr(instance, "rank", rank)
elif attr == "date":
subtodos = SubTodo.objects.filter(todo_id=instance.id).all()
for subtodo in subtodos:
setattr(subtodo, attr, value)
subtodo.save()
setattr(instance, attr, value)
else:
setattr(instance, attr, value)
# Set the updated_at field to the current time
instance.updated_at = timezone.now()
instance.save()
return instance
요렇게 수정해주었다.
테스트 코드
@pytest.mark.django_db
def test_update_todo_date_with_subtodo(
authenticated_client,
create_category,
create_user,
date,
content,
):
todo = Todo.objects.create(
user_id=create_user,
date=date,
due_time=None,
content=content,
category_id=create_category,
)
subtodo = SubTodo.objects.create(
todo_id=todo,
content="Test subtodo",
date="2024-08-01",
due_time=None,
is_completed=False,
)
url = reverse("todos")
data = {
"todo_id": todo.id,
"content": "Updated Todo",
"date": "2024-11-11",
}
response = authenticated_client.patch(url, data, format="json")
assert response.status_code == 200
assert response.data["content"] == "Updated Todo"
assert response.data["date"] == "2024-11-11"
assert subtodo.date == "2024-11-11"
계속 여기에서 subtodo 의 값이 안바뀌어서 왜인가했더니 db refresh 를 진행하지 않아서 그런 듯 했다. 디버깅했을 때는 잘 동작하는 것을 확인했기 떄문에 이 이유라고 생각했고... 넣어주었다.
성공했다
다음으로 할 일은 카테고리 관련일인데,
새로 만든 유저의 경우 카테고리를 무조건 하나 만들어줘야한다.
그래서 만들어주려고 한다...! 였는데
언어에 따라 카테고리를 다르게 만들어줘야하지 않나 라고 생각해서...
그래서 프론트에게 post 요청을 한번 더 보내도록 변경했다.
아니면 request로 영어인지 한국어인지 받아서 생성해야하기 때문에 좀... 번거롭다고 생각했기 때문이다.
'소프트웨어 마에스트로 > BackEnd(Django)' 카테고리의 다른 글
[Django] ManyToMany pytest 작성하기 (0) | 2024.11.21 |
---|---|
[Django] manyTomany 필드 사용해보기 (0) | 2024.11.17 |
[Django] profile 만들기 (0) | 2024.11.16 |
[Django] celery + redis 적용기 + migrations 관련 고민사항 (2) | 2024.11.13 |
[Django] drf AsyncOpenAI 적용기 (5) | 2024.11.05 |