【问题标题】:can we apply django ordering on a field of SerializerMethodField我们可以在 SerializerMethodField 的字段上应用 django 排序吗
【发布时间】:2020-12-09 05:28:18
【问题描述】:

我创建了一个方法字段,例如

matchCount= serializers.SerializerMethodField('get_match')

def get_match(self, obj):
    likes = obj.post.count
    #here will be logic of almost 120 lines so cant use annotate*  
    return likes / time if time > 0 else likes

现在我想根据这个提交的 ma​​tchCount 进行订购。在这种情况下,最好的解决方案是什么?直到现在我发现其他开发人员正在使用注释等,但由于这个逻辑是动态的,并且会在运行时计算匹配,我该怎么做才能根据这个字段进行排序?

注意:如果你们对此善意建议有更好的解决方案,我们将不胜感激

【问题讨论】:

    标签: django django-rest-framework django-orm


    【解决方案1】:

    在标准 DRF 中,我在序列化程序文档的任何地方都找不到它。

    但是,如果您使用this library,您可以在查询字符串中指定要排序的字段。

    编辑:

    如果您使用上述库,则必须将您的 ModelSerializer 更改为 DynamicModelSerializer,ModelViewSet 更改为 DynamicModelViewSet,Router 更改为 DynamicRouter,等等,正如他们在自述文件中所说的那样。

    那么你应该可以使用像GET /yourendpoint/?sort[]=matchCount这样的网址

    【讨论】:

    • 你能举个小例子吗?
    猜你喜欢
    • 2015-07-14
    • 1970-01-01
    • 2020-03-18
    • 2014-12-31
    • 1970-01-01
    • 2011-11-25
    • 1970-01-01
    • 1970-01-01
    • 2014-08-21
    相关资源
    最近更新 更多