我有兩個序列器,一個是教師,一個是課程。教官串行器具有確定的關係,像這樣的課程:DRF:相關序列化器的自定義排序
courses = CourseSerializer(many=True, read_only=True)
如何指定命令,在教練串行課程?
注意:我已經在Course Meta類中定義了ordering
值,但它是我想要的其他地方的默認排序。我想要的是api輸出的自定義排序(特別是部門,數字, - 學期而不是默認 - 學期)。
我有兩個序列器,一個是教師,一個是課程。教官串行器具有確定的關係,像這樣的課程:DRF:相關序列化器的自定義排序
courses = CourseSerializer(many=True, read_only=True)
如何指定命令,在教練串行課程?
注意:我已經在Course Meta類中定義了ordering
值,但它是我想要的其他地方的默認排序。我想要的是api輸出的自定義排序(特別是部門,數字, - 學期而不是默認 - 學期)。
因爲它是隻讀的,不會是一樣容易使用該字段的串行方法?
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
在這種情況下,您應該通過視圖集查詢集調整排序。我可以想象以下幾點:
queryset = Instructor.objects.select_related('courses').order_by('courses__number')
難道那不會重新排序教師?我想重新排列InstructorSerializer中的課程。 – chadgh
有一個[問題](https://github.com/tomchristie/django-rest-framework/issues/1005)這個(我相信同樣的一個),其中有一個潛在的解決方案。其次,還有另外一種方法,但是我認爲你需要[另一個序列化程序](https://groups.google.com/forum/#!topic/django-rest-framework/L9aXnwS4AQw) – nerdwaller