[英]AttributeError: 'NoneType' object has no attribute 'fields_get' in Openerp
[英]AttributeError: 'NoneType' object has no attribute 'get' - Python - OpenErp
我需要在一個對象中,這是讀取字段purchase.order
,從另一個對象product.product
該字段是一個選擇類型字段,因此,如果該字段已經si
選擇然后做_get_product_available_func(('done'))
其是已在product.product
聲明的函數
這是purchase.order
的選擇字段
'sel_cert' : fields.selection([('si', 'Si'),('no','No')], 'Origen Certificado'),
這個函數應該從product.product
“檢索”該字段
def desc_cert(self, cr, uid, ids, field_name, field_args, context=None):
obj = self.pool.get('purchase.order')
pids = obj.search(cr, uid, [('sel_cert', '=', 'si')])
val = self._get_product_available_func(('done'))
if pids == 'si':
return val
具有_get_product_available_func(('done))
的函數
def _get_product_available_func(states, what):
def _product_available(self, cr, uid, ids, name, arg, context=None):
return {}.fromkeys(ids, 0.0)
return _product_available
_product_qty_available = _get_product_available_func(('done',), ('in', 'out'))
_product_certificado_qty = _get_product_available_func(('done',), ('in', 'out'))
_product_virtual_available = _get_product_available_func(('confirmed','waiting','assigned','done'), ('in', 'out'))
_product_outgoing_qty = _get_product_available_func(('confirmed','waiting','assigned'), ('out',))
_product_incoming_qty = _get_product_available_func(('confirmed','waiting','assigned'), ('in',))
所以,我需要“執行” _get_product_available_func(('done'))
在product.product
當現場sel_cert
在purchase.order
的值為si
,但給我的錯誤,這里是在OpenERP的服務器回溯:
Server Traceback (most recent call last):
File "C:\Program Files\OpenERP 7.0-20130726-231403\Server\server\openerp\addons\web\session.py", line 89, in send
File "C:\Program Files\OpenERP 7.0-20130726-231403\Server\server\.\openerp\netsvc.py", line 292, in dispatch_rpc
File "C:\Program Files\OpenERP 7.0-20130726-231403\Server\server\.\openerp\service\web_services.py", line 626, in dispatch
File "C:\Program Files\OpenERP 7.0-20130726-231403\Server\server\.\openerp\osv\osv.py", line 188, in execute_kw
File "C:\Program Files\OpenERP 7.0-20130726-231403\Server\server\.\openerp\osv\osv.py", line 131, in wrapper
File "C:\Program Files\OpenERP 7.0-20130726-231403\Server\server\.\openerp\osv\osv.py", line 197, in execute
File "C:\Program Files\OpenERP 7.0-20130726-231403\Server\server\.\openerp\osv\osv.py", line 185, in execute_cr
File "C:\Program Files\OpenERP 7.0-20130726-231403\Server\server\.\openerp\osv\orm.py", line 3604, in read
File "C:\Program Files\OpenERP 7.0-20130726-231403\Server\server\.\openerp\osv\orm.py", line 3724, in _read_flat
File "C:\Program Files\OpenERP 7.0-20130726-231403\Server\server\.\openerp\osv\fields.py", line 1139, in get
AttributeError: 'NoneType' object has no attribute 'get'
也許我應該叫_product_qty_available
而不是_get_product_available_func
?
有人可以澄清一下嗎?
提前致謝!
試試這個:
def desc_cert(self, cr, uid, ids, field_name, field_args, context=None):
obj = self.pool.get('purchase.order')
pids = obj.search(cr, uid, [('sel_cert', '=', 'si')])
if pids == 'si':
val = self._get_product_available_func(('done'))
return val
或這個:
def desc_cert(self, cr, uid, ids, field_name, field_args, context=None):
if self.pool:
obj = self.pool.get('purchase.order')
pids = obj.search(cr, uid, [('sel_cert', '=', 'si')])
val = self._get_product_available_func(('done'))
if pids == 'si':
return val
更多想法:
試試一次:
def desc_cert(self, cr, uid, ids, field_name, field_args, context=None):
obj = self.pool.get('purchase.order')
pids = obj.search(cr, uid, [('sel_cert', '=', 'si')])
val = self._get_product_available_func(('done'))
if pids == 'si':
return val
return 10
如果我們得到一個AttributeError: 'int' object has no attribute 'get'
,我們知道故障確實在這個函數的輸出中。
另一個想法:
def desc_cert(self, cr, uid, ids, field_name, field_args, context=None):
obj = self.pool.get('purchase.order')
pids = obj.search(cr, uid, [('sel_cert', '=', 'si')])
val = self._get_product_available_func(('done'))
if pids.lower() == 'si':
return val
現在pid可以是“si”或“Si”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.