Python 使用DjangoRestFramework自定义序列化操作

Python 使用DjangoRestFramework自定义序列化操作,python,django,serialization,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.Forei

我对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
  • 所有者=425
  • 相册=24
  • name=dsc291.JPG
将变成

{
    id: '7VHXHIGMH4XWAKYMPSYYYENYA7NPZ7RGVY6GQJMG3BSIQXWZELNQ====',
    owner: 'J2M5BVZB2RCJQNXPN33G2LTMFSAXWPFVFHFTNQSHP56QO3OHFCNA====',
    album: 'HCMOMOEEA7YZEI5JJTTXN7LQHOEW3FCRQ7OB6ZMD7UEWISUG7PFA====',
    name: 'DSC2091.JPG'
}
另一方面也是如此。 我已经做了加密、解密和散列部分。
要使此id安全转换顺利进行,我应该在何处以及做些什么?

检查序列化上的转换方法:转换\u


另外,验证方法也会执行相反的操作,这样您就可以执行每种方式的加密。

谢谢!我想这就是我要找的。我在序列化程序类中添加了transform_owner()、validate_owner()方法。它在序列化时起作用,但在调用is\u valid()方法时不会调用validate\u owner()方法。此错误被抛出“所有者”:[u”类型不正确。应为pk值,收到str.]