TIL serializers.DateTimeField
2023. 5. 12. 20:38ㆍTIL/2023.5월
2023.05.12 금
문제
프로젝트 진행 중 created_at 필드의 값들이 출력되는 형태를 수정
이것을 00월00일 00:00 형태로 만들려고 합니다.
시도
model부분에서 created_at 필드의 형태를 바꿔보자! 시도했습니다.
def created_at_formatted(self):
return self.created_at.strftime('%m-%d-%H:%M')
migrate 후 출력했지만, 이전과 변화가 없었습니다.
이전에 이미지를 넣었을 때 image 필드에 시간을 지정해주는게 생각나 찾아봤습니다.
image = models.ImageField(blank=True, upload_to='%Y/%m/%d/')
upload_to가 파일업로드에 사용되는 것이라 시도하지 않았습니다.
해결
class ArticleSerializer(serializers.ModelSerializer):
author = serializers.SerializerMethodField()
def get_author(self, obj):
"""
게시글을 출력할 때 int형태의 author_id가 아닌 회원가입 시 생성한 username 출력
"""
return obj.author.username
class Meta:
model = Article
fields = "__all__"
이런형태로 출력하는 값을 변화시켰던 것이 생각나 시리얼라이저에서 시도했습니다.
class ArticleSerializer(serializers.ModelSerializer):
"""
article/ url에 GET방식일 때 사용합니다.
article db에 저장된 모든 게시글을 보여줍니다.
DateTimeField를 사용하여 시간 가독성을 좋게했습니다.
"""
created_at = serializers.DateTimeField(format="%m월%d일 %H:%M", read_only=True)
author = serializers.SerializerMethodField()
def get_author(self, obj):
"""
게시글을 출력할 때 int형태의 author_id가 아닌 회원가입 시 생성한 username 출력
"""
return obj.author.username
class Meta:
model = Article
fields = "__all__"
https://www.django-rest-framework.org/api-guide/fields/
Serializer fields - Django REST framework
www.django-rest-framework.org
created_at은 생성시간을 자동으로 찍어주고 따로 수정하지 못하게 하기위해 read_only=True를 지정해주었습니다.
가독성이 좋아졌습니다.
느낀점
이번 프로젝트에서 역할을 맡아 수행하면서 정말 실력이 많이 늘었다 생각됩니다. django에서 포기할까 고민했던 그 때와 비교했을 때, 정말 많이 성장했다 느껴집니다.
남은 캠프 기간동안 좀 더 노력하여 더 많은 성장을 이루자 생각이 듭니다.
'TIL > 2023.5월' 카테고리의 다른 글
TIL 머신러닝, 선형회귀 (0) | 2023.05.16 |
---|---|
TIL 프로젝트 후 KPT (0) | 2023.05.15 |
TIL pagination (0) | 2023.05.11 |
TIL IntegrityError at /article/FOREIGN KEY constraint failed (0) | 2023.05.10 |
TIL on_delete=models.SET_NULL (0) | 2023.05.09 |