第十二章 关系字段
所谓基础字段,即没有关联关系的字段,像我们常用的Char、Selection、Integer、Image等都属于基础字段类型的范畴。字段小部件(Fields Widget)被用于继承自基础视图(Basice View)的视图,因此,他们可以与基础模型(Basice Model)协同工作。
基础字段包含的对象
基础字段包含了多种我们常用的字段类型,具体列表如下:
TranslatableFieldMixin: TranslatableFieldMixin,
DebouncedField: DebouncedField,
FieldEmail: FieldEmail,
FieldBinaryFile: FieldBinaryFile,
FieldPdfViewer: FieldPdfViewer,
FieldBinaryImage: FieldBinaryImage,
FieldBoolean: FieldBoolean,
FieldBooleanButton: FieldBooleanButton,
BooleanToggle: BooleanToggle,
FieldChar: FieldChar,
LinkButton: LinkButton,
FieldDate: FieldDate,
FieldDateTime: FieldDateTime,
FieldDomain: FieldDomain,
FieldFloat: FieldFloat,
FieldFloatTime: FieldFloatTime,
FieldFloatFactor: FieldFloatFactor,
FieldFloatToggle: FieldFloatToggle,
FieldPercentage : FieldPercentage,
FieldInteger: FieldInteger,
FieldMonetary: FieldMonetary,
FieldPercentPie: FieldPercentPie,
FieldPhone: FieldPhone,
FieldProgressBar: FieldProgressBar,
FieldText: FieldText,
FieldToggleBoolean: FieldToggleBoolean,
HandleWidget: HandleWidget,
InputField: InputField,
NumericField: NumericField,
AttachmentImage: AttachmentImage,
LabelSelection: LabelSelection,
StateSelectionWidget: StateSelectionWidget,
FavoriteWidget: FavoriteWidget,
PriorityWidget: PriorityWidget,
StatInfo: StatInfo,
UrlWidget: UrlWidget,
TextCopyClipboard: TextCopyClipboard,
CharCopyClipboard: CharCopyClipboard,
JournalDashboardGraph: JournalDashboardGraph,
AceEditor: AceEditor,
上面的列表只是定义层面上的类型,并不能在实际的视图中直接使用。想要使用的话需要先通过字段注册中心(Field Registry)注册以后才可以使用。
常见的字段类型及其特点
下面我们来列举常见的字段类型及其特点。
FieldBinaryImage
FieldBinaryImage在注册中心时的注册名称为image,也就是我们在xml视图中使用到的image小部件, 其使用的视图模版为FieldBinaryImage。
我们知道视图的显示是使用的base64编码,实际上,在_render方法中,FieldBinaryImage会先判断传进来的是否是二进制的代码,如果是二进制代码则使用URL的方式进行显示,否则则分析base64编码,使用base64的方式进行显示。
FieldBinaryImage支持的base64格式有:
- jpg
- gif
- png
- svg+xml
FieldBinaryImage会使用一个叫做file_type_magic_word的字典,匹配传入值的第一个字节,猜测图片的格式。
file_type_magic_word:
{
'/': 'jpg',
'R': 'gif',
'i': 'png',
'P': 'svg+xml',
}
图片在渲染的时候,实际调用的是FieldBinaryImage-img模版。同时可以通过options属性传入可选的属性。
- size: (width,height)图片的大小
- preview_image: 预览图片的字段
- zoom: 是否启用缩放功能
- background: 背景图片
- tag:标签
- zoomDelay: 延迟缩放的时间
13.0版本以后,FieldBinaryImage新增了图片缩放的功能,其放大实际展示的是image_1920的字段。