如何在我的HyeprlinkedModelSerializer中使用自定义序列化器字段 [英] How to use custom serializers fields in my HyeprlinkedModelSerializer
问题描述
我需要在代码中存储图像的位图表示形式,所以我在模型中做到了
I need to store bitmap representation of an image in my code, so I did this in my model
logo = models.BinaryField(blank=True, null=True)
现在Django-rest没有序列化器BinaryField的字段。如果为此创建自己的序列化器字段,如何在代码中使用它?
例如,如果我创建
now Django-rest doesn't have a serializer field for BinaryField. If I create my own serializer field for this, how would I be able to use it in my code ? For example, if I create something like
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或在当前映射中声明新值?
How can I plug this mapping of models.BinaryField and MyBinaryField in my serializer. I know there is a default serializer_field_mapping map available and I can override it, but I want to use existing serializer_field_mapping as well. How can I insert my new entry into existing serializer_field_mapping or declare new values in current map ?
推荐答案
只需复制 serializer_field_mapping
从序列化器的基类中获取,并使用新的模型字段-序列化器字段对进行更新。例如,如果您使用 ModelSerializer
子类,则:
Just make a copy of serializer_field_mapping
from the base class of your serializer and update it with new "model field - serializer" field pair. For example if you use ModelSerializer
subclass then:
from rest_framework import serializers
class MySerializer(serializers.ModelSerializer):
serializer_field_mapping = (
serializers.ModelSerializer.serializer_field_mapping.copy()
)
serializer_field_mapping[models.BinaryField] = MyBinaryField
这篇关于如何在我的HyeprlinkedModelSerializer中使用自定义序列化器字段的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!