rest Serialzier 改變字段格式

2021-08-03 13:19:57 字數 2304 閱讀 7057

我們用serializer返回json資料的時候,我們會發現有的字段不是我們想要的效果,

比如乙個datetime型別的字段,會預設返回為:

"update_time": "2017-07-08t00:41:07.201525z"

而我們想要的效果是:

"update_time": "2017-07-08 01:15"我們先來看看models都有哪些類:

class

user

(models.model):

username = models.charfield(max_length=20, null=false, unique=true)

password = models.charfield(max_length=20, null=false)

name = models.charfield(max_length=10, null=false, unique=true) # 名稱

class

blog

(models.model):

title = models.charfield(max_length=50, null=false)

body = models.textfield()

owner = models.foreignkey(user) # 部落格的建立者

create_time = models.datetimefield("建立日期", auto_now_add=true)

update_time = models.datetimefield("更新日期", auto_now=true)

is_deleted = models.booleanfield(default=false)

def__str__

(self):

return self.title

這就是乙個簡單的部落格的資料庫模型了~~

那麼來看看serializer:

class

blogserializer

(serializers.modelserializer):

owner = serializers.readonlyfield(source='owner.name')

class

meta:

model = blog

fields = ('id', 'title', 'body', 'owner','create_time','update_time')

也非常的簡單,那麼我們應該怎麼改變create_timeupdate_time的格式呢?

自定義乙個字段序列化類:

class

formattimefield

(serializers.baseserializer):

defto_representation

(self, value):

return value.now().strftime('%y-%m-%d %h:%m')

這裡我們是唯讀的,所以,只需要重寫to_representation這個方法,其中的value是傳遞進來的字段,在這個例子中就是datetime。

然後我們呼叫datetime.now().strftime('%y-%m-%d %h:%m')就可以得到指定格式的時間了!!!

使用自定義的序列化類:

class

blogserializer

(serializers.modelserializer):

owner = serializers.readonlyfield(source='owner.name')

create_time = formattimefield(read_only=true)

update_time = formattimefield(read_only=true)

class

meta:

model = blog

fields = ('id', 'title', 'body', 'owner','create_time','update_time')

瀏覽器得到的json資料就是如下效果啦:

所以,改變某個字段還是很簡單的,我們只需要繼承serializers.baseserializer類,然後通過傳入的value然後自己想要的值就可以啦!!!

oracle改字型大小 sqlplus改字型

sqlplus font,其值為 terminal sqlplus font size,其值為14,或其他大小的值,如16 18等。問題3 在sql plus中改變字型和字符集 問題描述 有時,sql plus中顯示的資料字型太小,怎樣改變sql plus中顯示的字型大小?問題分析 oracle中所...

電腦改ip怎麼改

電腦改ip怎麼改?首先右鍵開啟電腦螢幕右下方的網路連線的圖示,選擇開啟網路和共享中心。在網路和共享中心當中點選網路連線連線狀態中的本地連線,可以進入本地連線狀態。在本地連線狀態中點選屬性,進入本地連線的管理狀態。在本地連線屬性當中可以看到兩個協議版本,雙擊它們可以看到更改ip位址和dns的介面。通常...

改水道風波

2006 9 6 這幾天倒霉透了!本來專案時間緊張,為了趕進度,自己封網乙個月。可是偏偏這時候改水道,這倒影響不大,可是接下來水道工人沒有把室內閥門裝上 下面就是麻煩 底下的閥門又沒開,這後來才知道。裝好我就上班去了,已經晚了乙個多小時。結果程式發生意外的問題,丟失了一部分程式,後來花近一天時間恢復...