Odoo models.py BaseModel
阅读原文时间:2023年07月11日阅读:1

class BaseModel(object):
""" Base class for OpenERP models.

OpenERP models are created by inheriting from this class' subclasses:

\*   :class:\`Model\` for regular database-persisted models 常用数据库模型

\*   :class:\`TransientModel\` for temporary data, stored in the database but  
    automatically vacuumed every so often 临时模型

\*   :class:\`AbstractModel\` for abstract super classes meant to be shared by  
    multiple inheriting model 抽象模型 不保存

The system automatically instantiates every model once per database. Those  
instances represent the available models on each database, and depend on  
which modules are installed on that database. The actual class of each  
instance is built from the Python classes that create and inherit from the  
corresponding model.

Every model instance is a "recordset", i.e., an ordered collection of  
records of the model. Recordsets are returned by methods like  
:meth:\`~.browse\`, :meth:\`~.search\`, or field accesses. Records have no  
explicit representation: a record is represented as a recordset of one  
record.

To create a class that should not be instantiated, the \_register class  
attribute may be set to False.  
"""  
\_\_metaclass\_\_ = MetaModel  
\_auto = True # create database backend  
\_register = False # Set to false if the model shouldn't be automatically discovered.  
\_name = None  
\_columns = {}  
\_constraints = \[\]  
\_custom = False  
\_defaults = {}  
\_rec\_name = None  
\_parent\_name = 'parent\_id'  
\_parent\_store = False  
\_parent\_order = False  
\_date\_name = 'date'  
\_order = 'id'  
\_sequence = None  
\_description = None  
\_needaction = False  
\_translate = True # set to False to disable translations export for this model

# dict of {field:method}, with method returning the (name\_get of records, {id: fold})  
# to include in the \_read\_group, if grouped on this field  
\_group\_by\_full = {}

# Transience  
\_transient = False # True in a TransientModel

# structure:  
#  { 'parent\_model': 'm2o\_field', ... }  
\_inherits = {}

# Mapping from inherits'd field name to triple (m, r, f, n) where m is the  
# model from which it is inherits'd, r is the (local) field towards m, f  
# is the \_column object itself, and n is the original (i.e. top-most)  
# parent model.  
# Example:  
#  { 'field\_name': ('parent\_model', 'm2o\_field\_to\_reach\_parent',  
#                   field\_column\_obj, origina\_parent\_model), ... }  
\_inherit\_fields = {}

\_table = None  
\_log\_create = False  
\_sql\_constraints = \[\]

# model dependencies, for models backed up by sql views:  
# {model\_name: field\_names, ...}  
\_depends = {}

CONCURRENCY\_CHECK\_FIELD = '\_\_last\_update'