2017-08-17 9 views
0
class myModel(models.Model): 

    _name = 'my.model' 

    state = fields.Selection(selection=_STATES, string='Status', index=True, track_visibility='onchange',required=True, copy=False, default='draft') 
    my_model_line = fields.One2many('my.model.line', 'model_id') 

別のモデル:私はmy.model.line moel 備考欄を非表示にするOdooの非表示フィールド

class MyModelLine(models.Model): 

    _name = 'my.model.line' 

    name = fields.Char(string='Name') 
    quantity = fields.Integer(string='Quantity', required=True, default=1) 
    remarks = fields.Text(string='Description') 
    my_model_id = fields.Many2one('my.model', 'My Model') 

my_model.xml

   <field name="my_model_line" attrs="{'readonly': [('state','not in', ('draft'))]}"> 
        <tree string="My model Lines" editable="bottom"> 
         <field name="name"/> 
         <field name="quantity"/> 
         <field name="remarks"/> 
         <button name="open_new_view" type="object" string="Add" class="oe_highlight"/> 
         <button icon="terp-face-plain" name="test" type="object" string="Add" class="oe_highlight"/> 
        </tree> 
       </field> 

ボタンフィールドを追加に依存my.modelステータス。 たとえば、モデルステータスが承認されている場合は、フィールドを非表示にします。

私が理解しているように、my.model.lineには状態フィールドがないため、my_model.xmlのドメインには不可視属性を使用できません。たぶんそこには解決策がありますか?

my.model.lineオブジェクトにstatusフィールドを作成すると思っていましたが、ステータスはmy.modelステータスに依存します。

また、私はこのようにしようとしていた:

<field name="remarks" attrs="{'invisible': "[('my_model_id .state', '=', 'approved')]"}"/> 

しかし、私はエラーました:「ドメインの不明なフィールドmy_model_id.state」

答えて

1

attrsには、このフィールドをフィールドを使用して最初にに追加する必要がありますフォームビューはモデルだけでなく、このフィールドを追加して非表示にしてもこのことを念頭に置いています。

第2に、many2oneフィールドを持つ他のモジュールのフィールドを表示する場合は、関連フィールドを使用します。

  state = fields.Selection('put same selzction here too', related='many2one_field.state's, readonly=True) 

フィールドはmany2one使用many2oneである場合、フィールドは、整数使用整数の場合、そのフィールドは、チャー使用チャーである場合に関連フィールドが同じ型でなければなりません。 ほとんどのフィールドでは、関連する属性だけで十分ですが、選択は同じ選択を再定義します。

これで、現在のモデルのフィールドのようにフィールドを使用できるようになりました。

ソリー私の英語についてあなたはアイデアを得ることを願っています

関連する問題