我想知道是否有某种方法可以在一个字段中显示,其他 3 个字段的串联,已经以相同的形式。
例如:
'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'),
因此,在手动填写这些字段后,结果字段必须向我显示这 4 个字段的串联,格式如下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
是 aRequest for Quotation
或 a ,则用于过滤Purchase Order
毕竟,我确实填写了 5 个字段integer
并char
输入,但仍然没有将这些字段“连接”在一个字符串或标题中,只是一个标签说 [object Object],这可能是一个label
问题吗?列中函数的字符串名称可能吗?