内置字段
lightning支持Django内置的大部份字段,另外还增加了以下字段,为开发时获得较大的便利:
- ImageURLField,图片链接字段。
- FileURLField,文件链接字段。
- RichTextField,富文本字段。
- TimestampField,时间戳字段。
- ObjectField,对象字段。
- ArrayField,数组字段。
这些字段均可以从lightning.fields 模块中import进来,如:
#
ImageURLField,图片链接字段使用ImageURLField,在Admin的前端会默认使用图片预览器用于查看、使用图片上传组件用于新增。存储引擎使用系统设置的引擎。
#
FileURLField,文件链接字段使用FieldURLField,在Admin的前端会默认使用文件预览器用于查看下载、使用文件上传组件用于新增。存储引擎使用系统设置的引擎。
#
RichTextField,富文本字段RichTextField,继承于TextField,在Admin的前端会默认使用富文本编辑器(CKEditor)来编辑该字段。
#
TimestampField,时间戳字段时间戳字段,继承于BigIntegerField,允许以时间戳的格式存储时间信息。对于遗留系统可以使用该字段,新的模型建议使用DateTimeField以获得更丰富的特性。
#
ObjectField,对象字段对象字段,用于存储单个复杂对象,类似dict。该字段需要传递一个object_model参数,该参数的值应为一个ObjectModel的子类,在该子类内,像定义Django Model一样定义属性即可,例,定义一个地理位置的类型,以ObjectField的形式存储于Contact的模型内:
ObjectField的访问,直接通过.
访问即可:
在前端编辑界面中,ObjectField对应一个独立的弹窗表单编辑器。
ObjectModel与Django Model的区别是,前者无对应的存储表,只会以JSON格式存储在使用它的父模型的表中。
ObjectField支持嵌套,即其ObjectModel内可以使用ObjectField字段。
#
ArrayField,数组字段与ObjectField的性质类似,它用于存储多个对象,但这个对象可以是ObjectModel类型的复杂对象,也可以是普通类型的数据,如str, int, bool等。例:
ArrayField的值是一个list,可直接迭代或下标访问:
在前端编辑界面中,ObjectField对应一个内嵌的多行编辑器。
如ObjectField一样,ArrayField也是支持嵌套,同时也支持与ObjectField互相嵌套。