gon*_*one 16 django django-rest-framework
我的情况是我的客户端正在尝试编写包含fk列表的表示
{
languages: [1]
last_name: "Beecher"
settings: 1
state: "NY"
}
Run Code Online (Sandbox Code Playgroud)
但是在阅读时,我希望有一个嵌套的表示来减少往返
{
languages: [{id:1, created:2013-07-21T01:38:33.569Z, modified:2013-07-21T01:38:33.569Z, language:testing}]
last_name: "Beecher"
settings: {
created: "2013-07-20T22:04:17.998Z"
email_blog: false
email_booking_accepted_denied: false
email_booking_request: false
email_friend_joined: false
email_groups_added_network: false
email_new_review: false
email_news: false
email_upcoming_booking_remind: false
id: 1
mobile_booking_accepted_denied: false
mobile_booking_request: false
mobile_friend_joined: false
mobile_groups_added_network: false
mobile_new_review: false
mobile_upcoming_booking_remind: false
modified: "2013-07-20T22:04:18.000Z"
user: 1
}
state: "NY"
}
Run Code Online (Sandbox Code Playgroud)
阅读是使用模型串行和深度= 1没问题-但试图写入给出了一个错误"ValueError异常('实例应该是一个查询集或其他迭代与众多= TRUE’)"当试图检查许多相关领域的国际热核实验堆
相反,关闭深度使得写作工作正如我所愿,但阅读并不好.
有什么我在这里完全不见了?它似乎应该是一个简单的改变,但我只能得到一个或另一个工作
感谢以前的帖子,我get_serializer_class为此提出了类似的解决方案.
我还希望能够根据方法更改序列化程序类.
首先,我使用字典映射请求方法到序列化程序类向视图类添加了一个属性.
serializer_classes = {
'GET': NestedSerializer,
'POST': FlatSerializer
}
Run Code Online (Sandbox Code Playgroud)
然后,我定义了一个mixin用于我想要这种行为的地方.
class SwappableSerializerMixin(object):
def get_serializer_class(self):
try:
return self.serializer_classes[self.request.method]
except AttributeError:
logger.debug('%(cls)s does not have the required serializer_classes'
'property' % {'cls': self.__class__.__name__})
raise AttributeError
except KeyError:
logger.debug('request method %(method)s is not listed'
' in %(cls)s serializer_classes' %
{'cls': self.__class__.__name__,
'method': self.request.method})
# required if you don't include all the methods (option, etc) in your serializer_class
return super(SwappableSerializerMixin, self).get_serializer_class() es
Run Code Online (Sandbox Code Playgroud)
我想到的最简单的事情是覆盖get_serializer_class()POST/PUT 的视图,以返回修改后的序列化器,不指定深度参数并为您的字段使用PrimaryKeyRelatedFieldlanguages。
| 归档时间: |
|
| 查看次数: |
2879 次 |
| 最近记录: |