我遇到的问题是获取一个函数字段来显示我在用于扩展stock.picking.out表单的自定义模块中的函数返回的字符串。理想情况下,我希望显示存储在数据库中的字段中的特定字符串,但这是另一个问题,因为我甚至无法显示通用字符串..
以下是我的自定义类中的字段定义:
_columns = {
'my_field_name': fields.function(_my_func, type='char', string='description', store=True, method=True, readonly=True),
}
这是我对'_my_func'的定义:
def _my_func(self, cr, uid, ids, field_name, arg, context=None):
str="some string to be displayed"
return str
以下是该字段的XML:
<field name="my_field_name" string="Here is my string:" class="oe_inline"/>
我搜索过OpenERP开发书以及他们的论坛和论坛,并且相信我已经遵循了该领域的所有正确语法,因此非常感谢任何帮助。
答案 0 :(得分:1)
你需要改进你的功能/方法,
def _my_func(self, cr, uid, ids, field_name, arg, context=None):
res = {}
for rec in self.browse(cr, uid, ids, context=context):
res[rec.id] = 'Some string'
return res
在编写功能字段(最多v7)时,请确保返回
之类的字典{17: "some string"}
如果您有多个字段,则可以像
{17: {'field_one': 'value 1', 'field_two': 'value 1'}}
编辑:
同样在_columns
中,请删除readonly=True
之类的
_columns = {
'my_field_name': fields.function(_my_func, type='char', string='description', store=True, method=True),
}
希望这有帮助。
答案 1 :(得分:0)
您必须改进功能登录
你可以做这样的事情。def _my_func(self, cr, uid, ids, field_name, arg, context=None)
v={}
if field_name:
v['my_field_name'] = " some string to be displayed "
return {'value': v}
然后最后你的功能逻辑像魅力一样工作。
我希望这对你有用:)
答案 2 :(得分:0)
尝试以下,
def _my_func(self, cr, uid, ids, field_name, arg, context=None):
res = {}
for obj in self.browse(cr, uid, ids, context=context):
###Set your string here
str="some string to be displayed"
res[obj.id]['my_field_name'] = str
return res
答案 3 :(得分:0)
如果你对OpenERP v7感到困惑,你总是可以尝试使用Odoo(OpenERP v8)。它更容易上班。
from openerp import models, fields,api
class my_class(models.Model):
_name="my.class"
my_field_name=fields.Text(string="description", compute=_my_func, store=True, readonly=True)
def _my_func(self):
self.my_field_name = "some string to be displayed"
我希望这可以帮到你!
答案 4 :(得分:0)
试试这个,
def _my_func(self, cr, uid, ids, field_name, arg, context=None):
result = {}
for record in self.browse(cr, uid, ids):
str="some string to be displayed"
result[record.id] = str
return result
如果在函数字段上使用store = True,那么它将首次被访问,它将结果存储在数据库中,并且从下次调用时不会。 要每次 store = True 访问功能字段,请参阅 sale.py [amount_total] 字段。我们必须编写一些附加代码
答案 5 :(得分:0)
您也可以这样说:
不使用浏览方法..
def _my_func(self, cr, uid, ids, field_name, arg, context=None):
result = {}
str="some string to be displayed"
result[ids[0]] = str
return result
确保在模型字段类型中应为char / text。