DRF:相关序列化程序的自定义排序

时间:2015-10-28 21:46:41

标签: django django-rest-framework

我有两个序列化程序,一个用于教师,一个用于课程。 Instructor序列化程序与这些课程有明确的关系:

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

如何为讲师序列化程序中的课程指定订单?

注意:我在Course Meta类中定义了ordering值,但它是我想要的其他地方的默认排序。我想要的是api输出的自定义排序(特别是dept,number,-semester而不是默认的-semester)。

4 个答案:

答案 0 :(得分:14)

由于它是只读的,因此对该字段使用序列化方法同样容易吗?

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

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

答案 1 :(得分:1)

从Django 1.7开始,您可以为basesrc gstbasesrc.c:3583:gst_base_src_start_complete:<source> pad not activated yet WARN basesrc gstbasesrc.c:3583:gst_base_src_start_complete:<source> pad not activated yet 0:00:00.106675435 140 0x75e01d50 WARN qtdemux qtdemux_types.c:233:qtdemux_type_get: unknown QuickTime node type pasp 0:00:00.106839132 140 0x75e01d50 WARN qtdemux qtdemux.c:3031:qtdemux_parse_trex:<qtdemux0> failed to find fragment defaults for stream 1 ..... uridecodebin gsturidecodebin.c:921:unknown_type_cb:<discoverer-uri> warning: No decoder available for type 'video/x-h264, stream-format=(string)avc, .... uridecodebin gsturidecodebin.c:988:no_more_pads_full:<discoverer-uri> error: no suitable plugins found: ... 指定一个查询集。使用预取只会产生一个附加的数据库查询,而不是使用apt-get install gstreamer1.0-libav --no-install-recommends的每个父对象。

prefetch_related

答案 2 :(得分:-1)

在这种情况下,您应该通过viewset queryset调整排序。我想象如下:

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

答案 3 :(得分:-1)

只需在字段声明中提供一个有序的$('div.modal-footer button.btn.btn-primary').off('click.close').on('click.close', function () { deleteItem(itemId) $('#main-modal').modal('hide') }) 参数,就可以做到这一点:

queryset

更多详细信息:http://www.django-rest-framework.org/api-guide/relations/#the-queryset-argument