django - 如何在我的 HyeprlinkedModelSerializer 中使用自定义序列化器字段

标签 django serialization django-rest-framework

我需要在我的代码中存储图像的位图表示,所以我在我的模型中这样做了

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/

相关文章:

使用 Java Servlet 的 Java 序列化类对象

json - 当其中一个是来自类型函数的 'Data' 时,如何使用多个 'deduced' 实例?

python - Django Rest Framework 多个数据库

django - 使用 `fieldset_filters` 对同一查询参数使用多个查询进行 DRF 过滤

django - 在 Django 之外加载和渲染模板

javascript - Backbone 和 Django,寻找更好的客户端架构

python - 在post_save信号django中捕获logentry历史

java - GSON - 特定情况下的自定义序列化程序

json - { "detail": "JSON parse error - Expecting value: line 1 column 1 (char 0)" }

python - Django ORM : Dynamically determine another table name according one field value