Django Serializer - 用数据库中的数据替换密钥

时间:2015-10-13 14:29:22

标签: python django django-rest-framework

我有一个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

但我并不清楚究竟发生了什么,或者如何获得/组织我想要的价值。

如何从数据库中获取两个值,并将它们转换为键:值对,每个结果?

2 个答案:

答案 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()