diff --git a/makourse/course/admin.py b/makourse/course/admin.py index 7f0543e..657922d 100644 --- a/makourse/course/admin.py +++ b/makourse/course/admin.py @@ -10,9 +10,19 @@ class ScheduleAdmin(admin.ModelAdmin): admin.site.register(Schedule, ScheduleAdmin) class ScheduleEntryAdmin(admin.ModelAdmin): - list_display = ('pk', 'schedule', 'num', 'entry_name') + list_display = ('pk', 'get_schedule', 'num', 'get_entry_name') + + def get_schedule(self, obj): + return obj.schedule if obj.schedule else "N/A" + get_schedule.short_description = "Schedule" + + def get_entry_name(self, obj): + return obj.entry_name if obj.entry_name else "N/A" + get_entry_name.short_description = "Entry Name" + admin.site.register(ScheduleEntry, ScheduleEntryAdmin) + class AlternativePlaceAdmin(admin.ModelAdmin): list_display = ('pk', 'schedule_entry', 'name') admin.site.register(AlternativePlace) diff --git a/makourse/course/serializers.py b/makourse/course/serializers.py index acd2a75..64e7270 100644 --- a/makourse/course/serializers.py +++ b/makourse/course/serializers.py @@ -6,7 +6,8 @@ class CreateMyPlaceSerializer(serializers.ModelSerializer): class Meta: model = MyPlace - fields = '__all__' + fields = ['id', 'place_name', 'address', 'latitude', 'longitude'] + class ListMyPlaceSerializer(serializers.ModelSerializer): diff --git a/makourse/course/urls.py b/makourse/course/urls.py index 49388d4..1a84750 100644 --- a/makourse/course/urls.py +++ b/makourse/course/urls.py @@ -2,7 +2,7 @@ from .views import * urlpatterns = [ - path('myplace/', MyPlaceView.as_view()), # 나만의 장소 추가(post), 목록조회(get) + path('myplace', MyPlaceView.as_view()), # 나만의 장소 추가(post), 목록조회(get) path('myplace/', MyPlaceDetailView.as_view()), # 나만의 장소 삭제(delete), 수정(patch) # 세부 일정 diff --git a/makourse/course/views.py b/makourse/course/views.py index 07e5593..93455b7 100644 --- a/makourse/course/views.py +++ b/makourse/course/views.py @@ -23,16 +23,13 @@ class MyPlaceView(APIView): 400: openapi.Response('Validation error'), } ) - def post(self, request, pk, *args, **kwargs): - request.data['user'] = pk - # request.user.id - # 일단 url로 user pk 받기 - serializer = CreateMyPlaceSerializer(data=request.data) + def post(self, request, *args, **kwargs): + serializer = CreateMyPlaceSerializer(data=request.data, context={'request': request}) if serializer.is_valid(): - serializer.save() - return Response(serializer.data, status=201) - return Response(serializer.errors, status=400) + serializer.save(user=request.user) + return Response(serializer.data, status=status.HTTP_201_CREATED) + return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) # 나만의 장소 목록 조회 @@ -41,10 +38,10 @@ def post(self, request, pk, *args, **kwargs): operation_summary="나만의 장소 목록 조회", responses={200: ListMyPlaceSerializer(many=True)} ) - def get(self, request, pk, *args, **kwargs): - my_places = MyPlace.objects.filter(user=pk) + def get(self, request, *args, **kwargs): + my_places = MyPlace.objects.filter(user=request.user) serializer = ListMyPlaceSerializer(my_places, many=True) - return Response(serializer.data, status=200) + return Response(serializer.data, status=status.HTTP_200_OK) @@ -59,10 +56,9 @@ class MyPlaceDetailView(APIView): responses={204: openapi.Response("Place deleted successfully")}, ) def delete(self, request, myplace_id, *args, **kwargs): - my_place = get_object_or_404(MyPlace, pk=myplace_id) # user=request.user 넣기 + my_place = get_object_or_404(MyPlace, pk=myplace_id, user=request.user) my_place.delete() - - return Response({"message":"My place deleted"}, status=204) + return Response({"message": "My place deleted"}, status=status.HTTP_204_NO_CONTENT) # 나만의 장소 수정 @@ -76,13 +72,13 @@ def delete(self, request, myplace_id, *args, **kwargs): }, ) def patch(self, request, myplace_id, *args, **kwargs): - my_place = get_object_or_404(MyPlace, pk=myplace_id) # user=request.user 넣기 - serializer = CreateMyPlaceSerializer(my_place, data=request.data, partial=True) + my_place = get_object_or_404(MyPlace, pk=myplace_id, user=request.user) + serializer = CreateMyPlaceSerializer(my_place, data=request.data, partial=True, context={'request': request}) if serializer.is_valid(): serializer.save() - return Response(serializer.data, status=201) - return Response(serializer.errors, status=400) + return Response(serializer.data, status=status.HTTP_200_OK) + return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) # 스케줄 속 각 일정