我需要在我的代码中存储图像的位图表示,所以我在我的模型中这样做了
logo = models.BinaryField(blank=True, null=True)
现在 Django-rest 没有 BinaryField 的序列化器字段。如果我为此创建自己的序列化程序字段,我将如何在我的代码中使用它? 例如,如果我创建类似
的内容class MyBinaryField(serializers.Field):
def to_representation(self, obj):
return base64.b64decode(obj)
def to_internal_value(self, data):
return base64.encodestring(data)
如何在我的序列化程序中插入 models.BinaryField 和 MyBinaryField 的映射。我知道有一个默认的 serializer_field_mapping 映射可用,我可以覆盖它,但我也想使用现有的 serializer_field_mapping。如何将新条目插入现有的 serializer_field_mapping 或在当前映射中声明新值?
最佳答案
只需从序列化程序的基类复制 serializer_field_mapping
并使用新的“模型字段 - 序列化程序”字段对更新它。例如,如果您使用 ModelSerializer
子类,则:
from rest_framework import serializers
class MySerializer(serializers.ModelSerializer):
serializer_field_mapping = (
serializers.ModelSerializer.serializer_field_mapping.copy()
)
serializer_field_mapping[models.BinaryField] = MyBinaryField
关于django - 如何在我的 HyeprlinkedModelSerializer 中使用自定义序列化器字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31608737/