-1

谁能解释我为什么 OpenErp 在 OpneErp 模块中创建新对象时在 posgresql 数据库表中创建一些默认值?

email_template 模块中--> email.template对象 --> 创建一些默认字段,如..

id, create_uid, create_date, write_date

用描述解释每个字段

虽然来自基本模块中的 Openerp trunk-Server,例如..

 res_users and res_partner

不在 PostgreSQL 数据库表中创建这种字段

我的问题是为什么要创建默认字段,为什么不在某些基本模块中创建默认字段?

4

2 回答 2

2

仔细检查以下字段是否已存在于基本模块表中res_users,并且res_partner

id, create_uid, create_date, write_date, write_uid

每当您创建新表时,这背后的原因都必须继承osv.osv基类。

示例:我正在创建项目表并从中继承,osv.osv因此该表会自动创建额外的五列id、create_uid、create_date、write_date、write_uid以及您定义的project_name列。总共创建了 6 个六列。

项目.py

from openerp.osv import osv, fields

class My_project(osv.osv):
    _name = 'my.project'
    _description = 'My project'
    _columns = {
         'project_name':fields.char('Project Name',size=30),
    }

优势

  1. 要知道哪个用户使用时间戳(日期时间)创建此表。

  2. ID 字段的自动增量。所以这个列的主键,

  3. 哪个用户(write_uid)正在更新表行,同时将时间戳更新存储到write_date列中。

    所以上述原因帮助我们跟踪时间用户 ID


如果设置_log_access = False属性,将不会在 SQL 表中创建四个字段:create_uid、create_date、write_uid、write_date

项目.py

from openerp.osv import osv, fields

class My_project(osv.osv):
    _name = 'my.project'
    _description = 'My project'
    _log_access = False
    _columns = {
         'project_name':fields.char('Project Name',size=30),
    }

现在您检查只为该表创建了 2 列。

希望这对你有帮助!

于 2014-04-01T05:03:10.030 回答
2

您必须验证您的数据库包,以下字段已经存在于res_users和中res_partners

和领域:

  • id:特定表的每条记录的索引号序列。

  • create_uid:创建特定记录的用户 ID。

  • create_date:记录的创建日期。

  • write_uid: 最后更新特定记录的用户 ID

  • write_date: 记录更新日期

于 2014-04-01T05:56:14.953 回答