TIL serializers.DateTimeField

2023. 5. 12. 20:38TIL/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