首页 > 解决方案 > 将二进制数据添加到 django rest 框架 API

问题描述

模型.py

class TblSnapshot(models.Model):
    url = models.CharField(max_length=500)
    snapshot = models.BinaryField()

我想在 API 中添加二进制数据,但它会产生错误

TypeError at /api
__str__ returned non-string (type memoryview)

标签: pythondjangodatabasepostgresqldjango-rest-framework

解决方案


您需要实现一个自定义字段(根据此处)。这就是您的序列化程序查找此类模型的方式

class BinaryField(serializers.Field):
    def to_representation(self, value):
        return value.decode('utf-8')

    def to_internal_value(self, value):
        return value.encode('utf-8')

class TblSnapshotSerializer(serializers.ModelSerializer):
    class Meta:
        model = TblSnapshot
        fields = ('id', 'url', 'snapshot')

    snapshot = BinaryField()

推荐阅读