Jos*_*ich 19 django serialization json
我正在序列化一堆对象:
json = serializers.serialize("json", objects, fields=('name', 'country'))
Run Code Online (Sandbox Code Playgroud)
我没有在我的字段列表中包含'pk',但生成的JSON包含每个序列化对象的主键.我不希望我的API向主要公众公开主键.
如果没有输出JSON,那么告诉serializers.serialze()不包含主键的正确方法是什么?
Jos*_*ich 17
我最终通过"手动"使用底层simplejson序列化器实现我想要的东西来解决这个问题:
from django.utils import simplejson
json = simplejson.dumps( [{'name': o.name,
'country': o.country} for o in objects] )
Run Code Online (Sandbox Code Playgroud)
打字多一点,但有效.
小智 9
乔什做了什么,但倒退了:
data = json.loads(json_string)
for d in data:
del d['pk']
del d['model']
data = json.dumps(data)
Run Code Online (Sandbox Code Playgroud)
这样,您在将来添加更多字段时无需担心更新代码.
您也可以覆盖JSON序列化程序,如下所述:覆盖Django对象序列化程序以摆脱指定的模型
from django.core.serializers.json import Serializer, DjangoJSONEncoder
from django.utils import simplejson
import logging
class MySerializer(Serializer):
def end_serialization(self):
cleaned_objects = []
for obj in self.objects:
del obj['pk']
cleaned_objects.append(obj)
simplejson.dump(cleaned_objects, self.stream, cls=DjangoJSONEncoder, **self.options)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12512 次 |
| 最近记录: |