1

1つの奇妙なことに気づきました。計算メソッドを作成してcreate_dateいて、フィールドを使用する必要がありましたが、しようとすると、フィールドを使用し、文字列を使用する必要がstrptimeあるというエラーが発生しました。boolメソッドから印刷すると、 と出力されましFalseた。しかし、データベースに入り、create_date を取得するために SQL クエリを作成すると、通常の日時が表示されました。

さらに興味深いのは、create_dateビューで定義すると型にcreate_dateなりstr、print を呼び出したときに datetime を確認できることです。このように意図されているか(およびその理由)、または何らかのバグであるかを誰かが知っていますか?

これらの結果を生成したコード:

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

日付フィールドがビューに存在するが、保存中に入力されていない (空である) 場合、計算メソッドでその日付を使用している間、機能フィールドは空白の文字列を取得し、ビューで日付フィールドがまったく宣言されていない場合は、 False に評価されます。

于 2014-08-05T11:07:09.937 に答える
1

満たされていない依存関係と関係があるようです。使用されていない最初の 2 つの依存関係 ( 'section_id.stage_config_ids', 'stage_id') と、何らかの理由でそれも評価さcreate_dateFalseました。これらの依存関係を削除すると、修正されました。

私が理解できない唯一のことはstr、依存関係が間違っていたにもかかわらず、そのフィールドをビューに変換したフィールドを元に戻す理由です。

于 2014-08-02T14:04:24.080 に答える