【问题标题】:Odoo - Compute field working on local but not onlineOdoo - 计算领域在本地而不是在线工作
【发布时间】:2019-01-24 23:42:56
【问题描述】:

我在合作伙伴模型上有一个自定义字段,它将获取有关当前合作伙伴的所有签名记录(来自 Sign 应用程序),这是我的代码:

# Signatures
x_signatures_relation = fields.One2many("signature.request.item", "partner_id")
x_signatures = fields.One2many("signature.request", compute="_get_signed_documents")

@api.multi
def _get_signed_documents(self):
    for record in self:
        record.x_signatures = [(6, 0, record.x_signatures_relation.ids)]

这在 xml 部分:

<page string="Signatures" name="signatures">
                    <tree>
                        <field name="x_signatures" />
                    </tree>
                </page>

代码在我的本地机器上按预期完美运行,但是一旦我通过 Github 将它推送到 odoo.sh,当我访问至少有一个签​​名的合作伙伴时,我会收到此错误(没有签名的合作伙伴不会发生) :

Error:
TypeError: val is undefined

https://keydigital-tb-import-test-258937.dev.odoo.com/web/content/3826-7bbc86b/web.assets_backend.js:1264
Traceback:
_parseServerData/<@https://keydigital-tb-import-test-258937.dev.odoo.com/web/content/3826-7bbc86b/web.assets_backend.js:1264:545
_.forEach@https://keydigital-tb-import-test-258937.dev.odoo.com/web/content/1751-3ead7e4/web.assets_common.js:12:558
_parseServerData@https://keydigital-tb-import-test-258937.dev.odoo.com/web/content/3826-7bbc86b/web.assets_backend.js:1264:288
_readMissingFields/</<@https://keydigital-tb-import-test-258937.dev.odoo.com/web/content/3826-7bbc86b/web.assets_backend.js:1275:445
_.forEach@https://keydigital-tb-import-test-258937.dev.odoo.com/web/content/1751-3ead7e4/web.assets_common.js:12:558
_readMissingFields/<@https://keydigital-tb-import-test-258937.dev.odoo.com/web/content/3826-7bbc86b/web.assets_backend.js:1275:35
then/</</<@https://keydigital-tb-import-test-258937.dev.odoo.com/web/content/1751-3ead7e4/web.assets_common.js:802:678
fire@https://keydigital-tb-import-test-258937.dev.odoo.com/web/content/1751-3ead7e4/web.assets_common.js:796:281
fireWith@https://keydigital-tb-import-test-258937.dev.odoo.com/web/content/1751-3ead7e4/web.assets_common.js:801:198
Deferred/</deferred[tuple[0]]@https://keydigital-tb-import-test-258937.dev.odoo.com/web/content/1751-3ead7e4/web.assets_common.js:803:56
rpc/</<@https://keydigital-tb-import-test-258937.dev.odoo.com/web/content/1751-3ead7e4/web.assets_common.js:3869:346
then/</</<@https://keydigital-tb-import-test-258937.dev.odoo.com/web/content/1751-3ead7e4/web.assets_common.js:802:678
fire@https://keydigital-tb-import-test-258937.dev.odoo.com/web/content/1751-3ead7e4/web.assets_common.js:796:281
fireWith@https://keydigital-tb-import-test-258937.dev.odoo.com/web/content/1751-3ead7e4/web.assets_common.js:801:198
Deferred/</deferred[tuple[0]]@https://keydigital-tb-import-test-258937.dev.odoo.com/web/content/1751-3ead7e4/web.assets_common.js:803:56
fire@https://keydigital-tb-import-test-258937.dev.odoo.com/web/content/1751-3ead7e4/web.assets_common.js:796:281
fireWith@https://keydigital-tb-import-test-258937.dev.odoo.com/web/content/1751-3ead7e4/web.assets_common.js:801:198
then/</</<@https://keydigital-tb-import-test-258937.dev.odoo.com/web/content/1751-3ead7e4/web.assets_common.js:802:874
fire@https://keydigital-tb-import-test-258937.dev.odoo.com/web/content/1751-3ead7e4/web.assets_common.js:796:281
fireWith@https://keydigital-tb-import-test-258937.dev.odoo.com/web/content/1751-3ead7e4/web.assets_common.js:801:198
then/</</<@https://keydigital-tb-import-test-258937.dev.odoo.com/web/content/1751-3ead7e4/web.assets_common.js:802:874
fire@https://keydigital-tb-import-test-258937.dev.odoo.com/web/content/1751-3ead7e4/web.assets_common.js:796:281
fireWith@https://keydigital-tb-import-test-258937.dev.odoo.com/web/content/1751-3ead7e4/web.assets_common.js:801:198
done@https://keydigital-tb-import-test-258937.dev.odoo.com/web/content/1751-3ead7e4/web.assets_common.js:1192:86
callback@https://keydigital-tb-import-test-258937.dev.odoo.com/web/content/1751-3ead7e4/web.assets_common.js:1212:15

如果我删除 xml 部分,它会正确显示合作伙伴,否则我将无法找出问题出在哪里,因为堆栈跟踪没有真正帮助,有什么想法吗?

【问题讨论】:

  • 错误在@sfx 或@CZoellner 答案中得到解决,但我建议您将装饰器@api.depends('x_signatures_relation') 添加到您的计算方法中,因为x_signatures 字段的计算取决于它。我想你对此有一个解释,但是,你告诉 Odoo 在signature.request 模型中使用signature.request.item 模型的ID。委托的某种继承?不过,这有点冒险。
  • @forvas 实际上错误并没有解决,当我将新代码推送到 odoo.sh 时,我仍然面临同样的问题,奇怪的是新旧版本的xml 代码在我的本地机器上运行良好,但在 odoo online 上却不行
  • 您的 XML page 元素是否在 XML notebook 元素中?奇怪的是,您的旧代码在您的本地机器上运行良好。在本地更新您的模块以重新加载所有 XML 代码(通过终端或界面),并查看它是否仍然正确。同时删除 One2many 字段周围的 tree 标签,看看会发生什么。
  • @forvas 是的,该页面位于笔记本元素内,因为我继承了 base.view_partner_form 视图以在联系人页面中显示签名,并且没有删除树、更新应用程序甚至重新启动我在本地机器上没有收到错误的服务,但在线显示相同的 Javascript 错误:/
  • 尝试加载带有调试和资产的在线实例,并使用浏览器开发工具自己调试 JS 错误。这些 JS 错误是您在 Odoo 开发中可能遇到的最严重的错误。

标签: javascript field odoo local


【解决方案1】:

我觉得这就够了

<page string="Signatures" name="signatures">
     <field name="x_signatures">
         <tree>
            <field name='your_filed_name'/>
            <field name='your_filed_name_2'/> 
         </tree>
     </field>
</page>

【讨论】:

  • 新代码:树>
  • 对不起上面的小姐,无论如何它仍然给出相同的Javascript错误:/
【解决方案2】:

The answer of sfx 应该足够了,但我想分享更多关于你的错误。

<page string="Signatures" name="signatures">
    <tree>
        <field name="x_signatures" />
    </tree>
</page>

(我猜)您试图告诉 Odoo 将签名显示为列表视图。这没有必要,因为另一个答案已经告诉你了。但是这里真正的错误是在字段上方使用&lt;tree&gt; hierachical,它应该显示为列表子视图。

您必须在要显示为子视图的字段中使用&lt;tree&gt;(或&lt;kanban&gt;)。然后仅仅定义一个空的子视图是不够的,而是一个带有字段、标签等的子视图:

<page string="Signatures" name="signatures">
    <field name="x_signatures">
        <tree>
            <field name="field_1" />
            <field name="field_2" />
            <field name="field_n" />
        </tree>
    </field>
</page>

【讨论】:

  • 我编辑了代码,请查看我对 @sfx 的评论中的新版本,但它仍然给出相同的 Javascript 错误:/ 这很奇怪,因为我的旧版本和新版本的代码都可以工作在我的本地机器上,但不在 odoo.sh 上
  • 那一定是另一个错误。我没有使用 odoo.sh 的经验,所以我不知道如何获得更好的堆栈跟踪。
  • 好的,我希望有人知道发生了什么,谢谢你的时间。
【解决方案3】:

我通过编辑 Python 代码解决了这个问题:

@api.depends('x_signatures_relation')
@api.multi
def _get_signed_documents(self):
    for record in self:
        ids = []
        for signature in record.x_signatures_relation:
            ids.append(signature.signature_request_id.id)
        record.x_signatures = [(6, 0, ids)]

我仍然不知道为什么第一段代码不能在 odoo.sh 上运行并且在我的本地机器上运行良好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多