1

すでに同じ形式で、他の 3 つのフィールドを連結した 1 つのフィールドを表示する方法があるのだろうか。

たとえば、次のようにします。

'field_1' : fields.integer('Campo 1'),
 field_2' : fields.integer('Campo 2'),
 field_3' : fields.integer('Campo 3'),

次に、これら 3 つのフィールドの入力を 1 つのフィールドに連結して表示します。

field_concatenated : fields.related(?)('field_1', 'field_2', 'field_3', 'Name of the field'),

'?' を入れます。私は実際にこれを達成する方法がわからないので、おそらくrelatedタイプのものを使用していますか?ちなみに、3つのフィールドは同じクラスフォームにあります。

結果のフィールドは である可能性がありreadonly、フォームが保存された後に表示されます。

私は自分自身を説明したことを願っています。

前もって感謝します

EDIT

フィールドのタイプは次のとおりですintegerchar

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

次々proveesoli_cant(「-」なしで)それが不可能な場合は、区切り記号なしの連結を表示します

おそらくPythonコードで宣言されているとは限りません.xmlビューにショートカットがあるのでしょうか?

idkのようなもの<field name="empresa" "provee" "soli_cant" "dest" "anho" />...

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です。

view次に、次のように xml から呼び出します。

<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

このすべての後、5 つのフィールドintegercharタイプに入力しますが、これらのフィールドが 1 つの文字列またはタイトルに「連結」されず、[object Object] というラベルだけが表示されますlabel。問題になる可能性がありますか? 多分列の関数の文字列名?

4

1 に答える 1

1

新しい機能フィールドを作成し、そこに他の 3 つのフィールドを結合します。

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

于 2013-08-03T01:15:38.670 に答える