1

我注意到一件奇怪的事情。我正在创建计算方法,我需要使用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 如果它没有在视图中定义。

4

2 回答 2

1

似乎它与未满足的依赖关系有关。前两个未使用的依赖项 ( 'section_id.stage_config_ids', 'stage_id') 并且由于某种原因它也被评估create_dateFalse。当我删除这些依赖项时,它就被修复了。

我唯一不明白的是,str即使依赖项错误,为什么还要将该字段包含在视图转换字段中?

于 2014-08-02T14:04:24.080 回答
1

如果视图中存在日期字段,但在保存时未填充(空),则在计算方法中使用该日期时功能字段将获得空白字符串,并且如果视图中根本没有声明日期字段,它将评估为假。

于 2014-08-05T11:07:09.937 回答