我使用以下命令来序列化一组对象:
json = serializers.serialize("json", objects, fields=('name', 'country'))
我没有在我的字段列表中包含'pk‘,但是生成的JSON包含了每个序列化对象的主键。我不希望我的API向公众公开主键。
除了处理输出JSON之外,告诉serializers.serialze()
不要包含主键的正确方法是什么?
发布于 2009-10-24 05:24:43
我最终通过使用底层simplejson
序列化程序“手动”实现了我想要的东西来解决这个问题:
from django.utils import simplejson
json = simplejson.dumps( [{'name': o.name,
'country': o.country} for o in objects] )
更多的打字,但很有效。
发布于 2012-06-26 02:16:36
乔希做了什么,但倒退了:
data = json.loads(json_string)
for d in data:
del d['pk']
del d['model']
data = json.dumps(data)
这样,以后添加更多字段时,您就不必担心更新代码了。
发布于 2011-06-08 06:33:04
您还可以重写JSON序列化程序,如下所述:Override Django Object Serializer to get rid of specified model
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)
https://stackoverflow.com/questions/1615649
复制相似问题