DRF如何序列化外來鍵的字段

2021-09-09 02:04:17 字數 1570 閱讀 8431

我覺得在有些應用場景下,這個操作是有用的,因為可以減少乙個ajax的請求,以增加效能。

當然,是二次請求,還是一次傳輸。這即要考慮使用者體驗,還要兼顧伺服器效能。

一切是有條件的平衡吧。就算是一次傳輸,欄位少的可以全部傳,而字段多的就要自定義啦。

在以下樣例裡,發布單是主表,但相關的專案,元件,使用者,如果預設情況下,只顯示id,很不友好。

我們可以將相關的外來鍵名稱也一併序列化啦。

重點的drf:

class userserializer(serializers.modelserializer):

class meta:

model = user

fields = ('id', 'username', 'email', 'first_name', 'last_name', 'is_superuser')

class siteserializer(serializers.modelserializer):

class meta:

model = site

fields = ('id', 'name')

class meta:

fields = ('id', 'name')

class deploypoolserializer(serializers.modelserializer):site = siteserializer(source='site_name') #如有問題,記得那個read_only,many之類的引數,然後看官方文件

create_user = userserializer()class meta:

model = deploypool

'jira_issue_no', 'create_user', 'change_date')

read_only_fields = ('name',)

angular服務和控制器:

prismversion.factory("versionsrv", ['$resource', function

($resource) ,},}

);}]);

prismversion.factory("sitesrv", ['$resource', function

($resource) ,},}

);}]);

prismversion.controller('versionctrl',

['$scope','versionsrv','sitesrv',

function

($scope,

versionsrv, sitesrv)]);

angular顯示:

drf序列化器欄位說明

read only 字段唯讀,預設值為false。唯讀欄位只會包含序列化輸出中,建立修改物件不會包含該欄位 write only 欄位只寫,預設值為false 和 read only 相反,序列化時不包含,建立修改物件必須包含該欄位 required 字段必須,預設是true 必須欄位在建立修改物件...

DRF 序列化自定義字段

models.py from django.db import models class usergroup models.model title models.charfield max length 32 class userinfo models.model user type choices...

如何使用DRF的序列化器之序列化

drf兩大利器為serizlizer序列化器和檢視,而序列化器又分為序列化和反序列化,本篇文章首先來看下drf序列化器的常用序列化方法。首先來看使用django開發rest介面時的表現,示例 如下 views.py from datetime import datetime class booksa...