2015-10-28 52 views
3

我有兩個序列器,一個是教師,一個是課程。教官串行器具有確定的關係,像這樣的課程:DRF:相關序列化器的自定義排序

courses = CourseSerializer(many=True, read_only=True)

如何指定命令,在教練串行課程?

注意:我已經在Course Meta類中定義了ordering值,但它是我想要的其他地方的默認排序。我想要的是api輸出的自定義排序(特別是部門,數字, - 學期而不是默認 - 學期)。

+0

有一個[問題](https://github.com/tomchristie/django-rest-framework/issues/1005)這個(我相信同樣的一個),其中有一個潛在的解決方案。其次,還有另外一種方法,但是我認爲你需要[另一個序列化程序](https://groups.google.com/forum/#!topic/django-rest-framework/L9aXnwS4AQw) – nerdwaller

回答

7

因爲它是隻讀的,不會是一樣容易使用該字段的串行方法?

class InstructorSerializer(serializers.ModelSerializer): 
    courses = serializers.serializers.SerializerMethodField() 

    def get_courses(self, obj): 
     ordered_queryset = <do your magic here> 
     return CourseSerializer(ordered_queryset, many=True, context=self.context).data 
-1

在這種情況下,您應該通過視圖集查詢集調整排序。我可以想象以下幾點:

queryset = Instructor.objects.select_related('courses').order_by('courses__number') 
+1

難道那不會重新排序教師?我想重新排列InstructorSerializer中的課程。 – chadgh