一、自定义Field介绍
在上一个博客中简单罗列了一下Django下models常用的Field,但是有时候这些Field不能满足我们的存储数据的需求,这个时候我们就可以使用自定义Field
二、自定义Field编写
具体思路是基于原有的Field,自定义Field首先去继承原有的Field,然后进行重写
需要重写明确以下几点:
第一、需要继承的models下的原有Field
第二、明确自己想要存储什么样的数据
第三、编写父类的__init__
第四、重写父类的to_python函数(将数据库内容转化为python对象)
第五、重写父类的get_prep_value函数(将python对象保存到数据库中,用于objects.create插入数据)
第六、重写父类的value_to_string函数(将python对象转为字符串,用于objects.get查询并输出数据)
具体代码如下:
from django.db import models
# 自定义Field
class MyField(models.TextField):
# 自定义Field主体内容
# 以存储列表数据为例
def __init__(self,*args,**kwargs):
super(MyField,self).__init__(*args,**kwargs) #调用父类初始化
# 重写父类方法
# 自定义Field001--将数据库内容转化为python对象
def to_python(self,value):
if not value:
value=[]
if isi