{"id":521,"date":"2019-05-06T05:47:47","date_gmt":"2019-05-05T13:47:47","guid":{"rendered":"https:\/\/chenbing.name\/?p=521"},"modified":"2020-05-22T14:42:26","modified_gmt":"2020-05-22T06:42:26","slug":"django-rest-framework-%e5%ba%8f%e5%88%97%e5%8c%96%e5%a4%9a%e4%b8%aa-model-%e8%a1%a8%e6%95%b0%e6%8d%ae%e5%9c%a8%e4%b8%80%e4%b8%aa-json-%e8%bf%94%e5%9b%9e%e4%b8%ad","status":"publish","type":"post","link":"https:\/\/chenbing.name\/blog\/521\/","title":{"rendered":"django rest framework \u5e8f\u5217\u5316\u591a\u4e2a model \u8868\u6570\u636e\u5728\u4e00\u4e2a json \u8fd4\u56de\u4e2d"},"content":{"rendered":"<p>\u60f3\u8981\u591a\u4e2amodel\u6570\u636e\u5e8f\u5217\u5316\u5728\u4e00\u4e2a\u8fd4\u56de\u4e2d\uff0c\u53ef\u4ee5\u4f7f\u7528 <code>DjangoRestMultipleModels<\/code> <br \/>\n<a href=\"https:\/\/github.com\/MattBroach\/DjangoRestMultipleModels\">https:\/\/github.com\/MattBroach\/DjangoRestMultipleModels<\/a><\/p>\n<p><!--more--><\/p>\n<p>\u4f7f\u7528pip\u5b89\u88c5\uff1a<\/p>\n<div>\n<pre><code>pip install django-rest-multiple-models<\/code><\/pre>\n<\/div>\n<p><code>Model<\/code> \u548c <code>Serializers<\/code>\u4e2d \u914d\u7f6e\u597d\u540e\uff0c<\/p>\n<h5 id=\"\u5728View\u4e2d\u4f7f\u7528\uff1a\">\u5728View\u4e2d\u4f7f\u7528\uff1a<\/h5>\n<ul>\n<li>\u5e8f\u5217\u5316\u6210\u4e24\u4e2a\u5bf9\u8c61\u7684\u65b9\u5f0f<\/li>\n<\/ul>\n<div>\n<pre><code>from drf_multiple_model.views import ObjectMultipleModelAPIView\n\nclass TextAPIView(ObjectMultipleModelAPIView):\n    querylist = [\n        {'queryset': Play.objects.all(), 'serializer_class': PlaySerializer},\n        {'queryset': Poem.objects.filter(style='Sonnet'), 'serializer_class': PoemSerializer},\n        ....\n    ]<\/code><\/pre>\n<\/div>\n<p>\u8f93\u51fa\uff1a<\/p>\n<div>\n<pre><code>{\n    \"Play\" : [\n        {\"genre\": \"Comedy\", \"title\": \"A Midsummer Night\"s Dream\", \"pages\": 350},\n        {\"genre\": \"Tragedy\", \"title\": \"Romeo and Juliet\", \"pages\": 300},\n        ....\n    ],\n    \"Poem\" : [\n        {\"title\": \"Shall I compare thee to a summer\"s day\", \"stanzas\": 1},\n        {\"title\": \"As a decrepit father takes delight\", \"stanzas\": 1},\n        ....\n    ],\n}<\/code><\/pre>\n<\/div>\n<ul>\n<li>\u5e8f\u5217\u5316\u6210\u4e00\u4e2a\u5bf9\u8c61\u7684\u65b9\u5f0f<\/li>\n<\/ul>\n<div>\n<pre><code>from drf_multiple_model.views import FlatMultipleModelAPIView\n\nclass TextAPIView(FlatMultipleModelAPIView):\n    querylist = [\n        {'queryset': Play.objects.all(), 'serializer_class': PlaySerializer},\n        {'queryset': Poem.objects.filter(style='Sonnet'), 'serializer_class': PoemSerializer},\n        ....\n    ]<\/code><\/pre>\n<\/div>\n<p>\u8f93\u51fa\uff1a<\/p>\n<div>\n<pre><code>[\n    {\"genre\": \"Comedy\", \"title\": \"A Midsummer Night\"s Dream\", \"pages\": 350, \"type\": \"Play\"},\n    {\"genre\": \"Tragedy\", \"title\": \"Romeo and Juliet\", \"pages\": 300, \"type\": \"Play\"},\n    ....\n    {\"title\": \"Shall I compare thee to a summer\"s day\", \"stanzas\": 1, \"type\": \"Poem\"},\n    {\"title\": \"As a decrepit father takes delight\", \"stanzas\": 1, \"type\": \"Poem\"},\n    ....\n]<\/code><\/pre>\n<\/div>\n<p><wiz_tmp_tag id=\"wiz-table-range-border\" contenteditable=\"false\" style=\"display: none;\"><\/p>\n<div id=\"wiz-table-col-line\" style=\"display: none;\"><\/div>\n<div id=\"wiz-table-row-line\" style=\"display: none;\"><\/div>\n<div id=\"wiz-table-range-border_start\" style=\"display: none;\">\n<div id=\"wiz-table-range-border_start_top\"><\/div>\n<div id=\"wiz-table-range-border_start_right\"><\/div>\n<div id=\"wiz-table-range-border_start_bottom\"><\/div>\n<div id=\"wiz-table-range-border_start_left\"><\/div>\n<div id=\"wiz-table-range-border_start_dot\"><\/div>\n<\/div>\n<div id=\"wiz-table-range-border_range\" style=\"display: none;\">\n<div id=\"wiz-table-range-border_range_top\"><\/div>\n<div id=\"wiz-table-range-border_range_right\"><\/div>\n<div id=\"wiz-table-range-border_range_bottom\"><\/div>\n<div id=\"wiz-table-range-border_range_left\"><\/div>\n<div id=\"wiz-table-range-border_range_dot\"><\/div>\n<\/div>\n<p><\/wiz_tmp_tag><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u60f3\u8981\u591a\u4e2amodel\u6570\u636e\u5e8f\u5217\u5316\u5728\u4e00\u4e2a\u8fd4\u56de\u4e2d\uff0c\u53ef\u4ee5\u4f7f\u7528 DjangoRestMultipleModels https:\/\/github.com\/MattBroach\/DjangoRestMultipleModels<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[86,4],"tags":[71,72,73,74],"class_list":["post-521","post","type-post","status-publish","format-standard","hentry","category-python","category-skill","tag-django-rest-framework","tag-drf","tag-model","tag-74"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/chenbing.name\/blog\/wp-json\/wp\/v2\/posts\/521","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/chenbing.name\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/chenbing.name\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/chenbing.name\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/chenbing.name\/blog\/wp-json\/wp\/v2\/comments?post=521"}],"version-history":[{"count":1,"href":"https:\/\/chenbing.name\/blog\/wp-json\/wp\/v2\/posts\/521\/revisions"}],"predecessor-version":[{"id":686,"href":"https:\/\/chenbing.name\/blog\/wp-json\/wp\/v2\/posts\/521\/revisions\/686"}],"wp:attachment":[{"href":"https:\/\/chenbing.name\/blog\/wp-json\/wp\/v2\/media?parent=521"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/chenbing.name\/blog\/wp-json\/wp\/v2\/categories?post=521"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/chenbing.name\/blog\/wp-json\/wp\/v2\/tags?post=521"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}