我有一个Django模型:
class Document(models.Model):
identifier = models.CharField(max_length=255)
user = models.ForeignKey(User)
document = models.TextField()
我想输出看起来像这样的JSON(这是每个结果):
{(identifier): (document)}, etc
我试图弄清楚是否有办法使用序列化程序来做到这一点。
到目前为止,我已经得到了这个:
class DocumentSerializer(serializers.ModelSerializer):
identifier = serializers.SerializerMethodField('getidentifier')
class Meta:
model = Document
fields = ('identifier', 'document')
def getidentifier(self, obj):
return obj.getidentifier
但我并不清楚究竟发生了什么,或者如何获得/组织我想要的价值。
如何从数据库中获取两个值,并将它们转换为键:值对,每个结果?
答案 0 :(得分:0)
你是否尝试过以下精神:
from django.core import serializers
data = serializers.serialize('json', Document.objects.all(), fields=('identifier','document'))
print data
请参阅here
问题是,每个领域都将成为关键。如果您希望某些字段为值,则需要在模型上创建自定义方法以根据需要生成字典,然后使用json.dumps()
将其转换为JSON,或者在该方法上调用序列化程序(您可以使用装饰器变成属性)。
旁注:你看过/正在使用Django REST Framework吗?它是一个django应用程序,具有JSON API所需的所有功能,包括序列化程序,反序列化程序等。
答案 1 :(得分:0)
为此,您可以覆盖foo1
的{{1}}方法。
list()