Django中自定义model字段类型Field
1、django自定义一个简单的字段
首先导入django models
from django.db import models
然后定义一个 获取字典类型的函数,该函数返回一个字典类型的参数
def get_kargs(**kwargs): return kwargs
(关于**kwargs的使用可以看我之前写过的一个经验)

2、接着我们开始定义这个简单字段 地址(AddressField)
for 循环中能够获取到一个字典类型参数,然后方便我们,在odels.CharField中直接对它使用models.CharField(address,**kwargs),第一个是传入的参数,第二个是该参数的条件。
def AddressField(address,**kwargs): for k ,v in get_kargs(db_index=True, null=False, blank=False, max_leng h=190).items(): if k not in kwargs: kwargs[k]=v return models.CharField(address,**kwargs)
到此这个字段定义完成

3、我们在自定义一个字段,首先也是 引入models
class TestField(models.Field): __metaclass__ =models.SubfieldBase description = 'TestField' def __init__(self,**kwargs): models.Field.__init__(self,**kwargs)
def value_to_string(self, obj): return self.get_prep_value(self._get_val_from_obj(obj))
get_prep_value 用于将Python变量保存到数据库,执行初步的非DB特定值检查和转换。
以上的**kwargs是传入的字典参数

4、**kwargs是传入的字典参数,可以传入如下一些字段
null=True 字段是否可以为空
blank=True 后台Admin 中添加数据时是否可允许空值
primary_key = False 主键
auto_now 和 auto_now_add
auto_now 自动创建,当前操作的时间
auto_now_add 自动创建-,创建时的时间
choices 选择字段,可以定义为一个字典类型
max_length 最大长度
default 设置默认值
verbose_name Admin中字段的显示名称
db_column 数据库字段名称
unique=True 不允许重复,默认false
db_index = True 数据库索引
editable=True 在Admin里是否可编辑
error_messages=None 错误提示
auto_created=False 自动创建
help_text Admin中提示帮助信息
validators=[] 验证字段
upload-to 上传路径

5、字段使用,对于添加的字段,我们只要在model中引入,即可使用
class User(models.Model):
name=models.CharField(max_length=100)
address=AddressField() text=TestField()

6、django field中常用的字段 CharField
字符串字段,用于小到大的字符串。
对于大量的文本,使用TextField.
此字段的默认窗体小部件是TextInput.
CharField有一个特点:
CharField.max_length
字段的最大长度(以字符为单位)。max_Length在数据库级别和Django的验证中强制执行
更多关于django的字段详细说明可以访问django官网查看
