【问题标题】:Add Binary data into django rest framework API将二进制数据添加到 django rest 框架 API
【发布时间】:2020-04-26 19:00:08
【问题描述】:

model.py

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

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

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

【问题讨论】:

  • 您能否发布完整的回溯和序列化程序的代码?

标签: python django database postgresql django-rest-framework


【解决方案1】:

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

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

【讨论】:

  • 它给出了“Tblsnapshot”对象的错误,没有属性“decode”@Jurabrazdil
  • 似乎序列化程序将整个 TblSnapshot 对象放入其快照字段中。 tblsnapshot.snapshot 是二进制值并具有解码方法。你能发表你的看法吗?
  • 其实我是用另一个表的Tblsnapshot的主键作为外键
猜你喜欢
  • 1970-01-01
  • 2015-08-26
  • 2018-11-28
  • 2015-05-02
  • 2014-05-31
  • 1970-01-01
  • 1970-01-01
  • 2016-01-21
  • 1970-01-01
相关资源
最近更新 更多