Fields
Contents
Fields#
This chapter describes the standard schema fields for Plone forms and content types.
The following tables show the most common field types for use in Forms and Dexterity Content Types. See schemas for information about how fields compose a schema for a form or content type data model.
Tip
In VS Code editor, you can install the Plone Snippets extension. This will give you snippets for most fields, widgets, and autoform directives in Python and XML based schemas.
Field properties#
You can initialize fields by passing properties into their constructors. To avoid repeating the available properties for each field, we'll list them once here, grouped into the interfaces that describe them. You'll see those interfaces again in the tables below that describe the various field types. Refer to the table below to see what properties a particular interface implies.
Interface |
Property |
Type |
Description |
---|---|---|---|
|
|
|
The title of the field. Used in the widget. |
|
|
A description for the field. Used in the widget. |
|
|
|
Whether or not the field is required. Used for form validation. The default is |
|
|
|
Whether or not the field is read only. Default is |
|
|
The default value for the field. Used in forms and sometimes as a fallback value. Must be a valid value for the field if set. The default is |
||
|
The default factory method for the field. Used in forms and sometimes as a fallback value. This is a name of a method which returns a dynamic default value. |
||
|
A value that represents "this field is not set." Used by form validation. Defaults to |
||
|
|
|
The minimum required length or minimum number of elements. Used for |
|
|
The maximum allowed length or maximum number of elements. Used for |
|
|
|
The minimum allowed value. Must be a valid value for the field, for example, an |
|
|
The maximum allowed value. Must be a valid value for the field, for example an |
||
|
|
Another |
|
|
|
Whether or not values in the collection must be unique. Usually not set directly. Use a |
|
|
|
Another |
|
|
Another |
||
|
|
|
An interface that must be provided by any object stored in this field. |
|
|
|
Default MIME type for the input text of a rich text field. Defaults to |
|
|
Default output MIME type for the transformed value of a rich text field. Defaults to |
|
|
|
A list of allowed input MIME types. The default is |
See IField
interface and field
implementation in zope.schema
documentation for details.
Field types#
The following tables describe the most commonly used field types, grouped by the module from which they can be imported.
Fields in zope.schema
#
Name |
Type |
Description |
Properties |
---|---|---|---|
|
n/a |
Used to model selection from a vocabulary, which must be supplied. Often used as the |
See Vocabularies. |
|
|
Used for binary data. |
|
|
|
ASCII text (multi-line). |
|
|
|
A single line of binary data, in other words a |
|
|
|
A single line of ASCII text. |
|
|
|
Unicode text (multi-line). Often used with a WYSIWYG widget, although the default is a text area. |
|
|
|
A single line of Unicode text. |
|
|
|
|
|
|
|
An integer number. Both |
|
|
|
A floating point number. |
|
|
|
A tuple (non-mutable). |
|
|
|
A list. |
|
|
|
A set. |
|
|
|
A |
|
|
|
Stores a simple string, but implies a password widget. |
|
|
|
Stores a dictionary. Both |
|
|
|
Stores a Python |
|
|
|
Stores a Python |
|
|
|
Stores a Python |
|
|
|
A text field intended to store source text, such as HTML or Python code. |
|
|
n/a |
Stores a Python object that conforms to the interface given as the |
|
|
|
A URI (URL) string. |
|
|
|
A unique identifier, either a URI or a dotted name. |
|
|
|
A dotted name string. |
|
|
|
A Zope interface. |
|
|
|
Stores a Python |
|
Fields in plone.namedfile.field
#
See plone.namedfile
and plone.formwidget.namedfile for more details.
Name |
Type |
Description |
Properties |
---|---|---|---|
|
|
A binary uploaded file. Normally used with the widget from |
|
|
|
A binary uploaded image. Normally used with the widget from |
|
|
|
A binary uploaded file stored as a ZODB blob. Requires the |
|
|
|
A binary uploaded image stored as a ZODB blob. Requires the |
|
Fields in z3c.relationfield.schema
#
See z3c.relationfield
for more details.
Name |
Type |
Description |
Properties |
---|---|---|---|
|
|
Stores a single |
|
|
|
A |
See List |
|
|
A |
See Choice |
Fields in plone.app.textfield
#
See plone.app.textfield
for more details.
Name |
Type |
Description |
Properties |
---|---|---|---|
|
|
Stores a |
|
Fields in plone.schema
#
See plone.schema versus zope.schema for more details.
Name |
Type |
Description |
Properties |
---|---|---|---|
|
str |
A field containing an email address |
|
|
Schema#
With plone.autoform
and plone.supermodel
we can use directives to add information to the schema fields.
Protect a field with a permission#
By default, fields are included in the form regardless of the user's permissions.
Fields can be protected using the read_permission
and write_permission
directives.
The read permission is checked when the field is in display mode, and the write permission is checked when the field is in input mode.
The permission should be given with its Zope 3-style name, such as cmf.ManagePortal
instead of Manage portal
.
In this example, the secret
field is protected by the cmf.ManagePortal
permission as both a read and write permission.
This means that in both display and input modes, the field will only be included in the form for users who have that permission:
from plone.supermodel import model
from plone.autoform import directives as form
class IMySchema(model.Schema):
form.read_permission(secret="cmf.ManagePortal")
form.write_permission(secret="cmf.ManagePortal")
secret = schema.TextLine(
title = "Secret",
)
In supermodel XML, the directives are security:read-permission
and
security:write-permission
:
<field type="zope.schema.TextLine"
name="secret"
security:read-permission="cmf.ManagePortal"
security:write-permission="cmf.ManagePortal">
<title>Secret</title>
</field>