使用以下型号和序列化器:
class Person(models.Model):
name = models.CharField(max_length=30)
class PersonSerializer(serializers.Serializer):
class Meta:
model = User
fields = ('name',)
我明白了:
[
{"name": "Jon"},
{"name": "Joe"},
{"name": "Jim"}
]
如何自定义序列化程序,以便输出如下内容:
{
"out": [
{"name": "Jon"},
{"name": "Joe"},
{"name": "Jim"}
],
"message": "success"
}
这里message
是在运行时构建的,否则我可以在JSONRenderer中对其进行硬编码。
答案 0 :(得分:2)
您还没有真正指定您对此消息需要什么类型的控件,或者您希望能够在何处定义它(在序列化程序级别,视图级别?)。
您始终可以覆盖此调度方法(MySimpleView
视图类):
def dispatch(self, request, *args, **kwargs):
response = super(MySimpleView, self).dispatch(request, *args, **kwargs)
data = {}
data['out'] = response.data
data['message'] = "My message"
response.data = data
return response
我假设你想根据响应状态控制你的自定义消息,所以这似乎是一个完美的地方,因为dispatch方法会返回响应本身。
所以现在只需将它变成一个漂亮的mixin并在你的视图中重用它。
但如果您不需要响应状态,那么自定义渲染器就是您的选择。