Python 使用DjangoRestFramework自定义序列化操作
我对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
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.]