.. module:: stdnet.odm
The most important part of a model, and the only required part of a model, is the list of database fields it defines. Fields are specified by class attributes. They are the equivalent to django Fields and therefore the equivalent of columns in a traditional relational databases.
Note
There is an important difference between stdnet fields and fields in a traditional relational database. Stdnet fields can be added, removed or changed without requiring any time consuming database migration!
This is an added bonus which can be of high importance when prototyping.
The :class:`Field` class is the base class for all fields and contains all the attribute and method definitions. Derived classes only implement a handful of methods.
.. autoclass:: Field :members: :member-order: bysource
.. autoclass:: AtomField :members: :member-order: bysource
.. autoclass:: StructureField :members: :member-order: bysource
Atom Fields derived from :class:`AtomField` and, as the name says,
they represent the simplest data in a model. Their representation in python,
is one of bytes, strings, numbers or dates.
.. autoclass:: IntegerField :members: :member-order: bysource
.. autoclass:: BooleanField :members: :member-order: bysource
.. autoclass:: AutoIdField :members: :member-order: bysource
.. autoclass:: FloatField :members: :member-order: bysource
.. autoclass:: SymbolField :members: :member-order: bysource
.. autoclass:: CharField :members: :member-order: bysource
.. autoclass:: ByteField :members: :member-order: bysource
.. autoclass:: DateField :members: :member-order: bysource
.. autoclass:: DateTimeField :members: :member-order: bysource
.. autoclass:: CompositeIdField :members: :member-order: bysource
.. autoclass:: JSONField :members: :member-order: bysource
.. autoclass:: PickleObjectField :members: :member-order: bysource
.. autoclass:: ModelField :members: :member-order: bysource
.. autoclass:: ForeignKey :members: :member-order: bysource
.. autoclass:: ManyToManyField :members: :member-order: bysource
These fields are remote data-structures such as list, sets and hash tables which are bound to a :class:`StdModel`. All the data-structure fields derives from :class:`StructureField`. These fields can be either bound to :class:`StdModel` instance (default) or class via the :attr:`StructureField.class_field` flag.
.. autoclass:: ListField :members: :member-order: bysource
.. autoclass:: SetField :members: :member-order: bysource
.. autoclass:: HashField :members: :member-order: bysource
.. autoclass:: TimeSeriesField :members: :member-order: bysource
.. autoclass:: LazyForeignKey :members: :member-order: bysource
.. autoclass:: StructureFieldProxy :members: :member-order: bysource