2014-12-24 4 views
4

Django Rest를 사용하여 모델에 첨부되지 않았지만 serializer에 첨부 된 사용자 정의 필드의 순서에 따라 모델의 json 표현을 반환하려고합니다. 모델 특정 필드를 사용하여이 작업을 수행하는 방법을 알고 있지만 필드가 serializer 클래스에만있는 경우 django rest를 사용하여 순서를 반환하는 방법은 무엇입니까? 나는 '점수'에 의해 주문 된 사진 목록을 반환하고 싶다. 감사!Django Rest 시리얼 라이저의 사용자 정의 필드에 주문 하시겠습니까?

당신의 관리자에게 방법 get_score의 논리를 움직일 수

class PicList(generics.ListAPIView): 
    queryset = Pic.objects.all() 
    serializer_class = PicSerializerBasic 
    filter_backends = (filters.OrderingFilter,) 
    ordering = ('score') 

------Serializer.py

class PicSerializer(serializers.ModelSerializer): 
    userprofile = serializers.StringRelatedField() 
    score = serializers.SerializerMethodField() 

    class Meta: 
     model = Pic 
     fields = ('title', 'description', 'image', 'userprofile', 'score') 
     order_by = (('title',)) 

    def get_score(self, obj): 
     return Rating.objects.filter(picc=obj).aggregate(Avg('score'))['score__avg'] 

답변

3

------Views.py class Pic. In this answer 어떻게하는지 보여주는 예가 있습니다.

관리자가되면 score 필드가 모든 곳에서 (예 : 일련 번호,보기 ...) class Pic의 모든 개체에 대해 "마법처럼"사용할 수있게되며 주문을 위해 사용할 수 있습니다.

관련 문제