0

odoo の res.partner.bank モデルに新しいフィールドを追加しようとしています。res.bank のフィールドの値によって入力されます (onchange によって)。完全に機能する res.bank にフィールドを追加しました

    'bic': fields.char('Bank Identifier Code', size=64,
        help="Sometimes called BIC or Swift."),
    'ifsc': fields.char('IFSC', size=64),
}

res.partner.bank に同様のフィールドを追加しました

    'bank_bic': fields.char('Bank Identifier Code', size=16),
    'bank_name': fields.char('Bank Name'),
    'bank_ifsc': fields.char('Bank Ifsc'),
    'owner_name': fields.char('Account Owner Name'),
    'street': fields.char('Street'),

対応するメニューを開くと、OpenERP サーバー エラーが表示されます。

File "d:\Program Files\ERP\server\.\openerp\sql_db.py", line 158, in wrapper
File "d:\Program Files\ERP\server\.\openerp\sql_db.py", line 234, in execute
ProgrammingError: column res_partner_bank.bank_ifsc does not exist
LINE 1: ...partner_bank."owner_name",res_partner_bank."city",res_partne...
                                                         ^

ただし、内部サーバー エラーが発生する onchange 定義も変更しようとしました。

def onchange_bank_id(self, cr, uid, ids, bank_id, context=None):
    result = {}
    if bank_id:
        bank = self.pool.get('res.bank').browse(cr, uid, bank_id, context=context)
        result['bank_name'] = bank.name
        result['bank_bic'] = bank.bic
        result['bank_ifsc'] = bank.ifsc
    return {'value': result}

手がかりが役立つかもしれません、事前に感謝します。

4

3 に答える 3

1

ああ、神様!私はそれがどんなばかげた問題になるか想像もしていませんでした。メモ帳++を使用していたので、追加された定義行は前に5つのスペースを使用し、他の行は4つのスペースを使用していましたが、余分なスペースを追加することは必ずしも犯罪ではありませんが、コンパイル中にエラーが発生していました.

別のモジュールを足場にしようとしているときに、インデントエラーについて言及したodoo.pyのおかげです。教訓として、コードに関しては、可能な限り小さなことでさえ、大きなバグの問題を引き起こす可能性があります.

于 2015-03-19T22:45:33.003 に答える
0

この行:

ProgrammingError: column res_partner_bank.bank_ifsc does not exist

あなたのエラーを指しています - その列をコードに追加した後にモジュールを更新しましたか? データベースが更新されておらず、列が関連するテーブルに追加されておらず、Odoo がクラッシュしたようです。

于 2015-03-19T09:42:11.817 に答える