Sim*_*ris 6 django django-rest-framework
刚进入Django Rest Framework.
我有一个简单的示例运行,其中通过REST API呈现模型.模型中没有相关字段,只是一堆字符串.
get_absolute_url()
将该模型的值呈现给JSON输出的最简单方法是什么?
我正在serializers.HyperlinkedModelSerializer
准备进入具有相关领域的更复杂的模型.
方法-1使用SerializerMethodField
:
您可以SerializerMethodField
在序列化程序中使用a 将get_absolute_url()
值添加到对象的序列化表示中.
这是一个只读字段.它通过调用附加到的序列化程序类上的方法来获取其值.它可用于将任何类型的数据添加到对象的序列化表示中.
我们将在序列化器中get_my_abslute_url()
为该my_absolute_url
字段定义一个方法,该方法将对象的绝对URL添加到序列化表示中.
class MyModelSerializer(serializers.ModelSerializer):
my_absolute_url = serializers.SerializerMethodField() # define a SerializerMethodField
def get_my_absolute_url(self, obj):
return obj.get_absolute_url() # return the absolute url of the object
Run Code Online (Sandbox Code Playgroud)
方法-2使用URLField
与source
参数:
您也可以使用a URLField
并将方法传递get_absolute_url
给它.这将调用该方法get_absolute_url
并在序列化表示中返回该值.
来自DRF文档的source
论证:
将用于填充字段的属性的名称.可能是一种只采用
self argument
,例如URLField('get_absolute_url')
,或可能使用点状符号来遍历属性的方法,例如EmailField(source='user.email')
.
class MyModelSerializer(serializers.ModelSerializer):
my_absolute_url = serializers.URLField(source='get_absolute_url', read_only=True)
Run Code Online (Sandbox Code Playgroud)
我建议使用第二种方法,因为DRF在其文档中明确使用了这种方法.
归档时间: |
|
查看次数: |
1284 次 |
最近记录: |