1. 程式人生 > >Django 模型中自定義欄位型別Field

Django 模型中自定義欄位型別Field

來一個簡單的例子吧。

1. 減少文字的長度,儲存資料的時候壓縮,讀取的時候解壓縮,如果發現壓縮後更長,就用原文字直接儲存:

Django 1.7 以下

1234567891011121314151617181920212223242526272829303132from django.db import modelsclass CompressedTextField(models.TextField):"""    model Fields for storing text in a compressed format (bz2 by default)    """__metaclass__ = models.SubfieldBase
def to_python(self, value):if not value:return valuetry:return value.decode('base64').decode('bz2').decode('utf-8')except Exception:return valuedef get_prep_value(self, value):if not value:return valuetry:value.decode('base64')return valueexcept Exception:try:tmp = value.encode('utf-8').encode('bz2'
).encode('base64')except Exception:return valueelse:if len(tmp) > len(value):return valuereturn tmp

to_python 函式用於轉化資料庫中的字元到 Python的變數, get_prep_value 用於將Python變數處理後(此處為壓縮)儲存到資料庫,使用和Django自帶的 Field 一樣。

Django 1.8 以上版本,可以用

1234567891011121314151617181920212223242526272829303132

相關推薦

Django 模型定義型別Field

來一個簡單的例子吧。1. 減少文字的長度,儲存資料的時候壓縮,讀取的時候解壓縮,如果發現壓縮後更長,就用原文字直接儲存:Django 1.7 以下1234567891011121314151617181920212223242526272829303132from djang

django 模型的計算

也可以把計算欄位寫在modelAdmin中 models.py class Person(models.Model): family_name= models.CharField(max_length=20, verbose_name='姓') given_name = models.Cha

liferay定義及部分路由說明

在liferay站點->站點設定->自定義欄位,中,對於這個儲存,首先,我們可以檢視form提交的action, form中acion連線為:http://localhost:8082/group/control_panel/manage? p_auth=he

讓DEDE內容模型定義在搜尋結果顯示的辦法

function Search_addfields($id,$result){ global $dsql; $row4 = $dsql->GetOne("SELECT * FROM `#@__addonshop22` where aid='$id'"); //#@__addonshop22是你內

django定義非主鍵型別(auto increment field)

1.django自定義欄位型別,實現非主鍵欄位的自增 # -*- encoding: utf-8 -*- from django.db.models.fields import Field, IntegerField from django.core i

織夢獲取定義附件型別檔案的格式型別檔案大小上傳日期

內容頁顯示效果 實現步驟 1、\templets\system\channel_addon.htm 裡面要清空,只留~link~   (注意:前後不能留有一個空格) 2、/include/extend.func.php  最下面加入方法 function GetFileInfo

destoon-定義新增到供應列表模糊搜尋

/module/sell/sell.class.php $keyword = $item['title'].','.$TYPE[$item['typeid']].','.strip_tags(cat_pos(get_cat($item['catid']), ','));

Django——7 常用的查詢 常用的模型型別 Field的常用引數 表關係的實現

Django 常用的查詢 常用的查詢方法 常用的查詢條件 常用欄位對映關係 Field常用引數 表關係的實現     查用的查詢方法 這是需要用到的資料 from django.http import Htt

DEDECMS定義為附件型別呼叫連結地址的方法

DEDECMS自定義欄位為附件時呼叫不帶樣式修改方法 當我們在系統模型中添加了一個自定義附件型別欄位的時候,例如我在後臺新增一個名為"fujian"的附件型別的欄位,欄位的實際內容為:'/uploads/soft/100602/1-100602212355.jpg' 倘若前

在thinkcmf5實現為各個分類下的文章新增定義的想法

前言 這裡只是自己的一個想法。此想法只完成了裡面的一部分。記於此,希望有同樣需求的同學們共同討論和學習。 我也是剛學習使用這個框架。在學習使用的過程中有這樣的一個需求。我的某一個文章分類下面的文章需要新增兩個欄位(原價、現價),我想很多同學都有這樣的需求吧。

在tp資料去重並獲取定義

在專案中用到了TP的去重功能,將其中的坑和一些收穫記錄下來 用文件中提供的distinct方法去重只能獲取資料中能獲取field中的欄位資料,程式碼如下 //會員模型 $member_mod

織夢dede:arclist按照定義的條件呼叫相關文章

dedecms織夢dede:arclist按照自定義欄位的條件呼叫相關文章,這對於想要在首頁呼叫某個自定義欄位的文章的同學來講,非常不錯 開啟 /include/taglib/arclist.lib.php 找到 //關鍵字條件 在它的上面加入 //自定義欄位關鍵字條件 if($ctag->G

織夢likearticle呼叫附加定義

在dedecms文章頁中我們經常會顯示相關文章之類的文章列表,就需要使用{dede:likearticle}標籤,但是預設的likearticle是不能顯示自定義的附加欄位的。 解決辦法 開啟 include/taglib/likearticle.lib.php 找到 if($keyword != ''

織夢新增超過兩百個定義後在使用addfields呼叫定義出錯的解決方法

dedecsm 自定義模型  新增自定義欄位(個數一百多個),使用addfields  方法呼叫,出現呼叫不出來的情況【addfields  裡面就能新增145個欄位,多了直接亂碼或者無法顯示】 解決方法 分別開啟 include/dedehtml2.class.

spring data jpa 查詢定義,轉換為定義實體

目標:查詢資料庫中的欄位,然後轉換成 JSON 格式的資料,返回前臺。 環境:idea 2016.3.4, jdk 1.8, mysql 5.6, spring-boot 1.5.2 背景:首先建立 entity 對映資料庫(非專業 java 不知道這怎麼說) @Entity @Tab

微信小程式定義實現選項的動態新增和刪除

問題描述: 在自定義選項中,點選新增選項按鈕,會出現一個選項的輸入框,輸入的選項可以通過點選左側的減號刪除 效果如圖: 解決過程: 1.首先寫出大體的框架。在pages下,建立了一個selfdefine的資料夾,在wxml中寫出靜態結構 selfdefine.wxml 說明

dede文章增加HTML定義字元被過濾問題

  在dedecms後臺頻道模型增加自定義欄位,一般HTML文字編輯器能解決使用者編輯問題,當然還包括純單行或多行文字編輯。但發現dedecms會自動過濾掉某些敏感的字元,比如style樣式,百度地圖js呼叫問題。下面主要圍繞著兩個問題分享一下新聞發言人開放時候的一些經驗。

織夢likearticle標籤呼叫和顯示附加(定義)辦法

在Dedecms文章頁中我們經常會顯示相關文章之類的文章列表,就需要使用{dede:likearticle}標籤,但是預設的 likearticle是不能顯示自定義的附加欄位的。解決辦法: 修改include/taglib/likearticle.lib.php. 大概在178行 $

PHPCMS推薦呼叫定義

  第1步:成功登入到phpcms後臺。   第2步:開啟內容>>內容相關設定>>模型管理>>找到自己相對應的模型。   第3步:開啟模型找到並開啟“欄位管理”,在自己需要顯示的欄位上點選“修改”。   第4步:在最後倒數第三個”在推薦位標籤中呼叫“上選擇是並確定儲存

log4net配置定義存入資料庫

  前言 以bs專案中引入log4net為例。log4net存入資料庫提供了基本的(時間、執行緒、等級、message)欄位。 但是實際日誌場景中可能需要統計IP、使用者ID或者其他業務相關的資訊記入日誌。 需要重寫log4net的部分方法來實現。本文展示使用log4net從0開始到記錄自定