私のクラスは単にこれです:
from openerp import tools
from openerp.osv import osv, fields
import requests
import logging
import json
_logger = logging.getLogger(__name__)
class stock_move(osv.Model):
_inherit = 'stock.move'
def create(self, cr, uid, vals, context=None):
new_id = super(stock_move, self).create(cr, uid, vals, context=context)
しかし、実行すると、次のようになります。
File "/opt/odoo/ebuynow/ebn_oddjobs/models.py", line 15, in create
new_id = super(stock_move, self).create(cr, uid, vals, context=context)
UnboundLocalError: local variable 'stock_move' referenced before assignment
このコードは別のシステムで正常に動作していたため、これが super() の正しい使用方法であると確信しています。この質問は、親クラスの create() メソッドを呼び出す目的で、stock_move をクラス名として認識しない原因となるシステムまたは Python 環境の可能性を知っている人がそこにいるかどうかをさらに尋ねています。
システムはubuntuサーバー14.04、python 2.7.6です。コードが実行された以前のシステムは、Python 2.7.6 を実行する ubuntu デスクトップ 14.04 でした。
これが起こる理由がわかりません。なぜpythonはstock_moveがローカル変数だと思うのですか?
編集:
クラス名を変更すると、次のようになります。
new_id = super(stock_move_too, self).create(cr, uid, vals, context=context)
UnboundLocalError: local variable 'stock_move' referenced before assignment
stock_move はまったく使用されておらず、エラーがまだ表示されますか??
編集2:
この問題は、「sudo /etc/init.d/odoo-server restart」コマンドを発行したときに odoo-server が実際にシャットダウンしなかったことが原因でした。プロセスを強制終了してから再起動すると、適切に再起動し始めました。