使用DjangoRestFramework自定义序列化操作

时间:2014-11-26 15:12:09

标签: python django serialization

我在使用djangorestframework的序列化程序时遇到了一些问题。 以下是我的代码的一部分。

from django.db import models
from django.contrib.auth.models import User

class Image(models.Model):
    id = models.AutoField(primary_key=True)
    owner = models.ForeignKey(User)
    album = models.ForeignKey(Album, null=True)
    name = models.CharField(max_length=128, default='')

class Album(models.Model):
    id = models.AutoField(primary_key=True)
    owner = models.ForeignKey(User)
    name = models.CharField(max_length=128, default='')

class ImageSerializer(serializers.ModelSerializer):
    owner = serializers.Field(source='owner.id')
    album = serializers.Field(source='album.id')
    uploadDevice = serializers.Field(source='uploadDevice.id')

    class Meta:
        model = Image
        fields = ('id', 'owner', 'album', 'name')

class AlbumSerializer(serializers.ModelSerializer):
    owner = serializers.Field(source='owner.id')

    class Meta:
        model = Album
        fields = ('id', 'owner', 'name')

所以问题是,我想隐藏模型序列化为json时的整数id值。例如,具有值

的图像模型实例
  • id = 12
  • owner = 425
  • album = 24
  • name = DSC2091.JPG

将变成

{
    id: '7VHXHIGMH4XWAKYMPSYYYENYA7NPZ7RGVY6GQJMG3BSIQXWZELNQ====',
    owner: 'J2M5BVZB2RCJQNXPN33G2LTMFSAXWPFVFHFTNQSHP56QO3OHFCNA====',
    album: 'HCMOMOEEA7YZEI5JJTTXN7LQHOEW3FCRQ7OB6ZMD7UEWISUG7PFA====',
    name: 'DSC2091.JPG'
}

另一方面也是如此。 我已经完成了加密,解密和散列部分。 我应该在哪里以及如何才能使此ID安全转换顺利进行?

1 个答案:

答案 0 :(得分:0)

序列化的Checkout转换方法:transform_ http://www.django-rest-framework.org/api-guide/serializers/#serializing-objects

此外,验证方法会反过来,因此您可以通过各种方式进行加密。