이 페이지는 Django, REST Framework의 Class based API인 ViewSet을 사용하는 것을 기반으로 설명하고 있습니다.
장고 모델에 있는 컬럼을 AS 를 이용하여 다른 변수를 추가하여 표현하고 싶을 때, 장고의 extra()를 사용하면 SQL의 AS로 치환된다.
SELECT SUBSTRING(da_date, 1, 4) AS year, da_date FROM test_table;
위와 같이 da_date라는 컬럼의 값을 substring()을 이용하여 year라는 값을 추가하고 싶다. 이럴 경우, queryset의 extra()함수를 사용하면 된다.
views.py
TestTable.objects.all().extra( select={'year':'SUBSTRING(da_date, 1, 4)} ).values( 'da_date', 'year' )
serializers.py
class TestSerializer(serializers.ModelSerializer): year = serializers.CharField() class Meta: model = TestTable fields = ('da_date', 'year', ) read_only_fields = ('year', )
TestSerializer 에 year 필드를 추가해 주고 class Meta의 fields에 year를 추가해준다.
TestSerizlier 의추가, 수정시에는 year가 사용되지 않을 것이기 때문에, read_only_fields에 추가해준다. (read_only=True로 표현해 줘도 된다.)
'Python > REST Framework' 카테고리의 다른 글
[Django-REST] Exception Handler (0) | 2016.10.19 |
---|---|
[REST] Serializer fields (0) | 2016.10.11 |
[REST] Nested relationships (0) | 2016.10.11 |
댓글