Python 如何在使用django rest framewrok返回json数据时更改模型列值
我有一个存储整数的模式,用户将给出十六进制数,我将转换为整数并存储在数据库中,现在我需要通过rest api公开我的模型…通过这样做,用户将看到整数值而不是十六进制,如何将整数转换回十六进制并在rest api中显示给用户 型号:Python 如何在使用django rest framewrok返回json数据时更改模型列值,python,json,django,rest,django-rest-framework,Python,Json,Django,Rest,Django Rest Framework,我有一个存储整数的模式,用户将给出十六进制数,我将转换为整数并存储在数据库中,现在我需要通过rest api公开我的模型…通过这样做,用户将看到整数值而不是十六进制,如何将整数转换回十六进制并在rest api中显示给用户 型号: class Address: base_addr = models.BigIntegerField(blank=False, null=False) 序列化程序: class AddressSerializer(serializers.Hyperlinked
class Address:
base_addr = models.BigIntegerField(blank=False, null=False)
序列化程序:
class AddressSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Address
fields = (base_addr,
)
视图集:
class AddressViewSet(viewsets.ReadOnlyModelViewSet):
model = Address
serializer_class = AddressSerializer
filter_fields = ('base_addr')
filter_backends = (filters.DjangoFilterBackend, filters.OrderingFilter,)
使用
序列化程序。SerializerMethodField
class Address:
base_addr = models.BigIntegerField(blank=False, null=False)
def get_hexadecimal(self):
// your convertion logic here
return addr_in_hexadecimal
然后
你不能改变你的型号怎么样?您只需要添加一个methodThank trinchet,如果用户从RESTAPI查询更多的小信息,比如?address=“0x5656576”如何将其转换回INTEGER并在模型中搜索。(我对rest不太熟悉)在回答这个问题之前,为什么需要存储十六进制数的整数?似乎您正在为此重载逻辑无论如何,您可以在这里看到如何筛选/搜索,这里是一个示例,希望有帮助:)
class AddressSerializer(serializers.HyperlinkedModelSerializer):
bae_addr_hex = serializers.Field(source='get_hexadecimal')
class Meta:
model = Address
fields = ('bae_addr_hex', ...)