django restframework serializer 增加自定义字段

<div id="cnblogs_post_body" class="blogpost-body">

在使用django restframework serializer 序列化在django中定义的model时,有时候我们需要额外在serializer中增加一些model中没有的字段。有两种方法实现这个目的。

假设现在有一个Animal模型,其中有name,type,country字段,country为外键。我们在序列化Animal时,需要额外增加外键country的area信息。

1.首先,在django的model中定义property

= models.CharField(max_length=50,default== models.CharField(max_length=50,default== models.ForeignKey(Country,blank=True,null=@property </span><span style="color: #0000ff;"&gt;def</span><span style="color: #000000;"&gt; country_area(self): </span><span style="color: #0000ff;"&gt;return</span><span style="color: #000000;"&gt; self.country.area

2.然后在定义django restframework的serializer时,使用字段的source参数指向我们上面定义好的property

= serializers.IntegerField(read_only== serializers.CharField(max_length=50= serializers.CharField(max_length=50= serializers.PrimaryKeyRelatedField(read_only== serializers.FloatField(required=False,source=

=</span><span style="color: #0000ff;"&gt;class</span><span style="color: #000000;"&gt; Meta: model </span>=<span style="color: #000000;"&gt; Animal fields </span>= (<span style="color: #800000;"&gt;'</span><span style="color: #800000;"&gt;id</span><span style="color: #800000;"&gt;'</span>,<span style="color: #800000;"&gt;'</span><span style="color: #800000;"&gt;name</span><span style="color: #800000;"&gt;'</span>,<span style="color: #800000;"&gt;'</span><span style="color: #800000;"&gt;type</span><span style="color: #800000;"&gt;'</span>,<span style="color: #800000;"&gt;'</span><span style="color: #800000;"&gt;country</span><span style="color: #800000;"&gt;'</span>,<span style="color: #800000;"&gt;'</span><span style="color: #800000;"&gt;country_area</span><span style="color: #800000;"&gt;'</span><span style="color: #000000;"&gt;) </span><span style="color: #0000ff;"&gt;def</span><span style="color: #000000;"&gt; get_country_area(self,obj): </span><span style="color: #0000ff;"&gt;return</span> obj.country.area </pre>

几点说明:

  1. 当不指定其method_name时,默认为get_
  2. 如果使用ModelSerializer并指定字段时,要包含此时定义的字段

相关文章

django跟redis交互的示例:在django项目同名文件夹下的setti...
django应对sql注入攻击的方法:1.使用django自带的数据库API...
在django中引入jquery的方法:1.下载jquery源文件;2.新建st...
用django搭建网站的操作方法:1.快捷键win+r,打开运行窗口,...
如果 PyCharm 无法创建 Django 项目,可以尝试以下解决方法:...
要在PyCharm中安装Django框架,请按照以下步骤进行操作:1. ...