Django REST框架将多个模型序列化为一个“时间轴”

时间:2018-08-19 18:34:21

标签: python django django-rest-framework polymorphism

我有一个抽象的基础“ Post”模型,其中包含多个子模型,这些子模型具有自己的必填字段。

我已经将这些不同的帖子类型序列化为类似这样的内容

"timeline": {
    "text": [
        {
            "id": 1,
            "heading": "Yea",
            "text": "hello world",
            "render": "<p>\n  Yea\n</p>\n<p>\n  hello world\n</p>\n",
            "created_on": "2018-08-18T16:05:45.910124Z"
        }
    ],
    "video": [],
    "image": []
}

我想做的是能够按时间顺序在前端显示它们。

实现此目标的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

如果我对您的理解正确,则可以对整个内容进行排序,然后再将其发送到前端。我假设您的list of dict与上面一样

posts = [{'timeline: { ... }}, {'timeline: { ... }}, ...]

就像您的示例一样,所以to sort it in-place应该是

posts.sort(key=lambda t: t['timeline']['text'][0]['created_on'])

这将按时间顺序排列所有对象。