[Recipe: Remake] 레시피 후기 등록, 수정, 삭제
models.py
이름 | 설명 |
---|---|
recipe | 레시피 |
user | 작성자 |
content | 내용 |
created_at | 작성시간 |
updated_at | 수정시간 |
serializers.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class RecipeReviewSerializer(ModelSerializer):
class Meta:
model = RecipeReview
fields = ('content',)
def create(self, validated_data):
# 레시피를 못찾으면 404 오류
# 레시피의 기본키는 request 경로에서 찾았다
recipe = get_object_or_404(
Recipe,
pk=self.context.get('request').path.split('/')[2]
)
user = self.context.get('request').user
review = RecipeReview.objects.create(
recipe=recipe,
user=user,
content=validated_data.get('content')
)
return review
views.py
ModelViewSet
을 상속받아 작성했다.
1
2
3
4
5
6
7
8
9
class RecipeReviewViewSet(ModelViewSet):
serializer_class = RecipeReviewSerializer
queryset = RecipeReview.objects.all()
def get_queryset(self):
# 레시피를 못찾으면 404 오류
recipe = get_object_or_404(Recipe, pk=self.kwargs.get('recipe_pk'))
return super().get_queryset().filter(recipe=recipe)
urls.py
DefaultRouter
를 사용했다. 스택 오버플로우를 참고했다.
1
2
3
4
5
6
router = DefaultRouter()
router.register(r'', RecipeViewSet)
router.register(r'(?P<recipe_pk>\d+)/reviews', RecipeReviewViewSet)
urlpatterns = [
path('', include(router.urls)),
]
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.