[英]ODOO XMLRPC calling custom method which create a record on the same model
[英]How to call an Odoo model's method with no parameter(except self) on a specific record through xmlrpc in Odoo 13?
我正在開發一個腳本來在 Odoo 的model中創建記錄。 我需要在特定記錄上運行這個模型的方法。 在我的情況下,我需要在特定記錄上運行的方法沒有任何參數(只有self
)。 我想知道如何通過從客戶端到 Odoo 服務器的xmlrpc
調用在 model 的特定記錄上運行該方法。 下面是我嘗試調用該方法並傳遞有關此問題的特定記錄的 id 的方式。
xmlrpc_object.execute('test_db', user, 'admin', 'test.test', 'action_check_constraint', [record_id])
action_check_constraint
檢查 model 的每條記錄上的一些約束,如果所有約束都通過,則更改記錄的 state 或引發驗證錯誤。 但是上面使用xmlrpc
調用的方法會引發以下錯誤:
xmlrpc.client.Fault: <Fault cannot marshal None unless allow_none is enabled: 'Traceback (most recent call last):\n File "/home/ibrahim/workspace/odoo13/odoo/odoo/addons/base/controllers/rpc.py", line 60, in xmlrpc_1\n response = self._xmlrpc(service)\n File "/home/ibrahim/workspace/odoo13/odoo/odoo/addons/base/controllers/rpc.py", line 50, in _xmlrpc\n return dumps((result,), methodresponse=1, allow_none=False)\n File "/usr/local/lib/python3.8/xmlrpc/client.py", line 968, in dumps\n data = m.dumps(params)\n File "/usr/local/lib/python3.8/xmlrpc/client.py", line 501, in dumps\n dump(v, write)\n File "/usr/local/lib/python3.8/xmlrpc/client.py", line 523, in __dump\n f(self, value, write)\n File "/usr/local/lib/python3.8/xmlrpc/client.py", line 527, in dump_nil\n raise TypeError("cannot marshal None unless allow_none is enabled")\nTypeError: cannot marshal None unless allow_none is enabled\n'>
> /home/ibrahim/workspace/scripts/automate/automate_record_creation.py(328)create_record()
任何人都可以幫助通過xmlrpc
客戶端到Odoo服務器在特定記錄上調用模型方法(除了self
之外沒有參數)的正確和最佳方式嗎?
引發該錯誤,因為 xmlrpc 庫不允許None
作為默認返回值。 但是你應該通過允許它來改變這種行為。
以下行來自Odoo 的外部 API 文檔,擴展為允許None
作為返回值:
models = xmlrpc.client.ServerProxy(
'{}/xmlrpc/2/object'.format(url), allow_none=True)
有關 xmlrpc ServerProxy
的更多信息,請查看python 文檔
如果action_check_constraint
不返回任何內容(默認為None
),您可能會收到錯誤消息。
嘗試使用設置為debug_rpc_answer
的log-level
選項運行服務器以獲取更多詳細信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.