오늘은 아침스터디, 그리고 이어지는 django특강, 타임어택까찌
아침7시부터 지금 저녁9시가 넘었는데 시간이 정말 후딱 간것 같다.
아직 관계형DB에 관한 이해가 조금은 부족한 것 같다.
정한이 형이 얘기해준 차원얘기도 도움이 되지만 내걸로 만들려면 좀더 딥한 이해가 필요하다
ForeignKey
: many-to-one 형태로 특정 테이블에서 다른 테이블을 참조 할 수 있다,OneToOneField
: one-to-one 형태로 ForeignKey와 동일하지만, 1:1 관계만 가능하다.ManyToManyField
: many-to-many 형태로 한 개의 필드에서 여러개의 테이블을 참조 할 수 있다.user_profile.hobby
→ 정참조hobby.userprofile_set
→ hobby를 참조하고 있는 UserProfile 테이블의 object를 져옴user_hobby
로 지정했다면 hobby.user_hobby
와 같이 사용역참조 또한 정참조, 역참조 의 대한 개념에 대한 이해가 필요하다
앞으로 많은 queryset 과 object 들을 컨트롤 하려면 이것에 대한 정확한 이해가 필요 한 것 같다.
기본적인 사용법
from rest_framework import serializers
class UserSerializer(serializers.ModelSerializer):
class Meta:
# serializer에 사용될 model, field지정
model = User
# 모든 필드를 사용하고 싶을 경우 fields = "__all__"로 사용
fields = ["username", "password", "fullname", "email"]
from rest_framework.response import Response
from rest_framework import status
from user.serializers import UserSerializer
def get(self, request):
user = request.user
# serializer에 queryset을 인자로 줄 경우 many=True 옵션을 사용해야 한다.
serialized_user_data = UserSerializer(user).data
return Response(serialized_user_data, status=status.HTTP_200_OK)
# return data
"""
{
"username": "user",
"password": "pbkdf2_sha256$320000$u5YnmKo9luab9csqWpzRsa$pKfqHnBiF5Rgdo1Mj9nxNOdhpAl9AhPVXFPXkbPz7Mg=",
"fullname": "user's name",
"email": "user@email.com"
}
"""
또한 외래키 관계에 있는 테이블이 있을 경우, serializer 를 생성해서 함께 사용 할 수 있다.
그리고 SerializerMethodField를 활용해 원하는 필드를 추가하고, 더 나아가서 여러 serializer들을 함께 사용할 수 있다.
장고의 꽃이라고 부를만하다. 그동안 구현하기 어려웠던, 복잡한던 로직을 직관적이고 아주 편하게 사용할 수 있을 것 같다.
말이 편하다 이지만, 이것에 대한 완벽한 이해는 필요 할 것 같다.
오늘 저녁에는 타임어택후 타임어택에 대한 복습을 하였다. 내일은 주말이지만 drf 과제가 남아있다.
요즘 조금 피곤하긴 하지만 그만큼 공부가 재밌어지고, 팀원들이랑 스터디 하는게 굉장히 도움이 많이 되고 재밌다.
앞으로도 개속 재밌게 공부하자!