당신은 멋쟁이, 우리는 장고쟁이~

0%

DRF-Tutorial-22편- Serializer 업데이트 해주기

Serializer 업데이트 해주기


이제 snippets 는 해당 snippets 를 생성한 user 와 연계되어 있습니다.


snippets/serializers.pySnippetSerializer 를 업데이트 하여, 이를 반영하도록 해줍니다.


아래 코드를, snippets/serializers.py 파일에 추가 해줍니다.


1
2
3
4
5
6
class SnippetSerializer(serializers.ModelSerializer):
owner = serializers.ReadOnlyField(source='owner.username')

class Meta:
model = Snippet
fields = ['id', 'title', 'code', 'linenos', 'language', 'style', 'owner']

owner 를 Meta 클래스안에 fields 리스트에 확실하게 추가해 주는걸 잊지 않습니다.


이 필드는 꽤나 재미있는 일을 합니다. source 인자는 어떤 속성이 필드를 채우기 위해 사용되는지 제어합니다. 그리고, 직렬화된 인스턴스에 속성을 가르킬수도 있습니다.


또한, 위에 보이는데로, owner.username 같이 점을 찍은 표현 (dot-notation) 을 인자로 받아서, django 의 템플릿 언어와 같이 주어진 속성들을 파악 합니다.


우리가 추가한 필드는 타이핑이 되지 않는 ReadOnlyField 클래스로, CharField, BooleanField 등과 같은 다른 타이핑된 필드들과는 대조됩니다. 타이핑 되지 않은 ReadOnlyField 는 언제나 읽기 전용이고, 직렬화된 표현으로 사용될것 입니다.


하지만, 이것들이 역직렬화되었을때는, 모델 인스턴스들을 업데이트 할때 사용되지 않을것입니다. 우리는, CharField(read_only=True) 도 이곳에 사용할수도 있었습니다.