Django Serializer의 Context
def post(self, request, user_id):
"""
배송 정보 추가
"""
user = get_object_or_404(User, id=user_id)
validated_result = ValidatedData.validated_deliveries(user, request)
if validated_result is not True:
return Response(
{"err": "유효성 검사 실패"}, status=validated_result
)
serializer = DeliverySerializer(data=request.data)
if serializer.is_valid():
serializer.save(user=user)
return Response(
{"msg": "배송 정보가 등록되었습니다."}, status=status.HTTP_200_OK
)
else:
return Response(
{"err": serializer.errors}, status=status.HTTP_422_UNPROCESSABLE_ENTITY
)
user = get_object_or_404(User, pk=request.user.pk)
serializer = DeliverySerializer(data=request.data, context={'user': request.user})
if serializer.is_valid():
serializer.save(user=user)
return Response(
{"msg": "배송 정보가 등록되었습니다."}, status=status.HTTP_200_OK
)
else:
return Response(
{"err": serializer.errors}, status=status.HTTP_400_BAD_REQUEST
)
class DeliverySerializer(serializers.ModelSerializer):
"""
배송 정보 저장 및 업데이트
"""
class Meta:
model = Delivery
exclude = ('user',)
def validate(self, deliveries_data):
"""
우편 번호 검증
"""
validated_result = ValidatedData.validated_deliveries(self.context.get('user'), deliveries_data)
if validated_result is not True:
raise ValidationError(validated_result[1])
return deliveries_data
context를 이용하여 다양한 정보를 넘겨줄 수도 있다.