我想知道是否有某种方式可以在一个字段中显示,这是另外三个字段的串联,已经采用相同的形式。
例如:
'field_1' : fields.integer('Campo 1'),
field_2' : fields.integer('Campo 2'),
field_3' : fields.integer('Campo 3'),
然后显示在一个字段中连接的这3个字段的输入:
field_concatenated : fields.related(?)('field_1', 'field_2', 'field_3', 'Name of the field'),
我放了'?'标志因为我实际上不知道如何实现这一点,也许使用related
类型?顺便说一句,3个字段在同一个类表格中。
结果字段可以是readonly
,并在表单保存后显示。
我希望我已经解释过了。
提前致谢
EDIT
字段可以是integer
和char
2nd EDIT
实际例子:
'empresa' : fields.integer('Empresa'),
'provee' : fields.integer('Proveedor'),
'soli_cant' : fields.integer('Cantidad de Solicitudes'),
'dest' : fields.char('Destino'),
'anho' : fields.integer('Año'),
因此,在手动填充这些字段后,结果字段必须以empresa-proveesoli_cant-dest-anho
一个接一个地provee
和soli_cant
,(如果不能使用' - ')如果不可能那么那就显示没有分隔符的串联
也许它不一定在python代码上声明,也许在xml视图中有一些快捷方式?
像<field name="empresa" "provee" "soli_cant" "dest" "anho" />
idk ......
3rd EDIT
我正在使用的实际代码(感谢Ethan Furman):
列:
'empresa' : fields.integer('Empresa'),
'provee' : fields.integer('Proveedor'),
'soli_cant' : fields.integer('Cantidad de Solicitudes'),
'dest' : fields.char('Destino'),
'anho' : fields.integer('Año'),
使用它的列的功能:
def _combinalos(self, cr, uid, ids, field_name, args, context=None):
values = {}
for id in ids:
rec = self.browse(cr, uid, [id], context=context)[0]
values[id] = {}
values[id][field_name] = '%s %s %s %s %s' %(rec.empresa, rec.provee, rec.soli_cant, rec.dest, rec.anho)
return values
columns = {
'nombre' : fields.function(_combinalos, string='Referencia de Pedido', type='char', arg=('empresa','provee','soli_cant', 'dest', 'anho'), method=True),
所有这些当然都在class
。
然后我从我的xml view
这样调用它:
<h1>
<label string="Request for Quotation " attrs="{'invisible': [('state','not in',('draft','sent'))]}"/>
<label string="Purchase Order " attrs="{'invisible': [('state','in',('draft','sent'))]}"/>
<field name="nombre" class="oe_inline" readonly="1" />
</h1>
label string
将过滤Request for Quotation
或Purchase Order
毕竟,我填写了integer
和char
类型的5个字段,但仍然没有将这些字段“连接”在一个字符串或标题中,只是一个标签说[对象],它可能是label
问题?列中的函数的字符串名称可能是?
答案 0 :(得分:1)
创建一个新的功能字段并将其他三个字段组合在一起:
def _combine(self, cr, uid, ids, field_name, args, context=None):
values = {}
for id in ids:
rec = self.browse(cr, uid, [id], context=context)[0]
values[id] = {}
values[id] = '%s %s %s' % (rec.field1, rec.field2, rec.field3)
return values
_columns = {
...
fields.function(_combine, string='three fields in one!', type='char',
arg=('field1','field2','field3'), method=True),
注意:未经测试的代码
_combine
方法应该是包含其他列的类的一部分,fields.function
也应该在该类“_columns
中。