【问题标题】:TypeError: string indices must be integers, not str - OpenErpTypeError:字符串索引必须是整数,而不是 str - OpenErp
【发布时间】:2013-12-16 02:24:16
【问题描述】:

我正在使用prestashop - openerp 连接器模块,但是当我尝试从网站导入数据时,出现此错误回溯:

  File "/usr/prestaconnect/openerp-connector/connector/queue/worker.py", line 122, in run_job
job.perform(session)
  File "/usr/prestaconnect/openerp-connector/connector/queue/job.py", line 460, in perform
self.result = self.func(session, *self.args, **self.kwargs)
  File "/usr/prestaconnect/prestashoperpconnect/prestashoperpconnect/unit/import_synchronizer.py", line 663, in import_batch
importer.run(filters=filters, **kwargs)
 File "/usr/prestaconnect/prestashoperpconnect/prestashoperpconnect/unit/import_synchronizer.py", line 202, in run
return super(PaymentMethodsImportSynchronizer, self).run(filters, **kwargs)
 File "/usr/prestaconnect/prestashoperpconnect/prestashoperpconnect/unit/import_synchronizer.py", line 176, in run
record_ids = self._run_page(filters)
 File "/usr/prestaconnect/prestashoperpconnect/prestashoperpconnect/unit/import_synchronizer.py", line 186, in _run_page
self._import_record(record_id, **kwargs)
 File "/usr/prestaconnect/prestashoperpconnect/prestashoperpconnect/unit/import_synchronizer.py", line 206, in _import_record
('name', '=', record['payment']),
TypeError: string indices must be integers, not str

在模块代码中我看到了这个:

 class PaymentMethodsImportSynchronizer(BatchImportSynchronizer):
_model_name = 'payment.method'

def run(self, filters=None, **kwargs):
    if filters is None:
        filters = {}
    filters['display'] = '[id,payment]'
    return super(PaymentMethodsImportSynchronizer, self).run(filters, **kwargs)

def _import_record(self, record):
    ids = self.session.search('payment.method', [
        ('name', '=', record['payment']),
        ('company_id', '=', self.backend_record.company_id.id),
    ])
    if ids:
        return
    self.session.create('payment.method', {
        'name': record['payment'],
        'company_id': self.backend_record.company_id.id,
    })

我不知道实际发生了什么,我需要对此进行一些说明,因为我没有开发此模块,而且我是 prestashop - openerp 集成的新手。

任何帮助将不胜感激,在此先感谢!

【问题讨论】:

    标签: php python integration openerp prestashop


    【解决方案1】:

    您的回溯准确地告诉您您需要知道的内容。

    看起来您正在将字符串传递给 _import_record 而不是字典。你为什么不检查一下record 是什么。

    调试正在发生的事情的最简单方法是使用pdb Python 调试器。就在 _import_record 函数内部,ids = ... put 上方,import pdb; pdb.set_trace()。然后像往常一样运行程序,pdb 会在该行中断,然后你可以分析record 设置的内容。

    请参阅:http://pythonconquerstheuniverse.wordpress.com/2009/09/10/debugging-in-python/Getting started with the Python Debugger pdb 介绍 pdb 和使用 Python 进行一般调试。如果您使用的代码不是您自己编写的,您将需要这项技能。

    【讨论】:

    • 如果你想调试别人的代码或理解第三方模块,你应该使用python调试器pdb
    • 您好,我现在正在使用pdb,仍然没有任何线索,我会继续测试并给您回信。
    • 传递给_import_record()record 最终持有什么?
    • 由于依赖关系,问题给了我一个错误,我的意思是,当在 python 中的 pdb 上运行它时,它没有找到属于“openerp 模块”本身的模块
    • 无法执行 :(,有什么想法可以调试吗?
    猜你喜欢
    • 1970-01-01
    • 2020-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-07
    • 2017-08-06
    相关资源
    最近更新 更多