本篇文章給大家分享的是有關(guān)使用Django如何實(shí)現(xiàn)自定義YamlField,小編覺得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
成都創(chuàng)新互聯(lián)公司專注于泗水網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠為您提供泗水營銷型網(wǎng)站建設(shè),泗水網(wǎng)站制作、泗水網(wǎng)頁設(shè)計(jì)、泗水網(wǎng)站官網(wǎng)定制、小程序設(shè)計(jì)服務(wù),打造泗水網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供泗水網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。需求
在使用django admin時(shí)希望后臺(tái)的Textarea多行文本框可以按yaml格式編寫,數(shù)據(jù)庫保存為Text文本類型,字段和接口中讀取出來自動(dòng)變?yōu)樽值浠蛄斜砀袷健?/p>
試過pip install django-yamlfied,修改支持新版django之后
接口中返回的字段是字符串形式,不符合預(yù)期。
之前寫過一版。
import yaml from django.db import models class YamlField(models.TextField): def to_python(self, value): # 將數(shù)據(jù)庫內(nèi)容轉(zhuǎn)為python對(duì)象時(shí)調(diào)用 if not value: value = {} if isinstance(value, (list, dict)): return value return yaml.safe_load(value) def get_prep_value(self, value): # create時(shí)插入數(shù)據(jù), 轉(zhuǎn)為字符串存儲(chǔ) return value if value is None else yaml.dump(value, default_flow_style=False) def from_db_value(self, value, expression, connection): # 從數(shù)據(jù)庫讀取字段是調(diào)用 return self.to_python(value)