Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在使用django rest framewrok返回json数据时更改模型列值_Python_Json_Django_Rest_Django Rest Framework - Fatal编程技术网

Python 如何在使用django rest framewrok返回json数据时更改模型列值

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

我有一个存储整数的模式,用户将给出十六进制数,我将转换为整数并存储在数据库中,现在我需要通过rest api公开我的模型…通过这样做,用户将看到整数值而不是十六进制,如何将整数转换回十六进制并在rest api中显示给用户

型号:

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', ...)