我注意到一件奇怪的事情。我正在创建计算方法,我需要使用create_date
字段,但是当我尝试使用字段时strptime
出现错误,bool
我需要使用字符串。当我从方法打印它时,它输出为False
. 但是当我进入数据库并编写 sql 查询来获取 create_date 时,它显示了正常的日期时间。
更有趣的是,如果我create_date
在视图中定义,则create_date
变为str
类型,并且在调用 print 时可以看到日期时间。有谁知道它的意图是这样(以及为什么)还是某种错误?
产生这些结果的代码:
from openerp import models, fields
from openerp.api import one, depends
class crm_lead(models.Model):
_inherit = 'crm.lead'
stage_deadline = fields.Datetime('Stage Deadline', compute="_compute_stage_deadline")
@one
@depends('section_id.stage_config_ids', 'stage_id', 'create_date')
def _compute_stage_deadline(self):
print type(self.create_date) #prints 'bool' if this field is not defined in view. Prints 'str'
self.stage_deadline = datetime.now()
如果我添加这个视图:
<?xml version="1.0"?>
<openerp>
<data>
<!-- CRM Lead Form View -->
<record model="ir.ui.view" id="crm_case_form_view_leads_inherit">
<field name="name">CRM - Leads Form - Inherit</field>
<field name="model">crm.lead</field>
<field name="inherit_id" ref="crm.crm_case_form_view_leads"/>
<field name="arch" type="xml">
<field name="priority" position="after">
<field name="create_date" invisible="1"/>
</field>
</field>
</record>
</data>
</openerp>
然后create_date
变成str
类型。如果我删除此视图,它会返回bool
类型。所以这样我就不能使用 create_date 如果它没有在视图中定义。