2017-07-20 79 views

回答

2

如果您想從數據庫加載默認值,請按照此方法。

你可以通過覆蓋default_get方法來實現它,並且你需要編寫你的邏輯。

@api.model 
def default_get(self,fields): 
    res = super(class_name, self).default_get(fields) 
    last_rec = self.search([], order='id desc', limit=1) 
    if last_rec: 
     res.update({'your_field_name':last_rec.field_value}) 
    return res 

當你點擊添加項目將填補新的紀錄,它的默認值和默認值,我們已經寫了最後一條記錄的價值是它的存在。

如果你想從列表視圖加載默認值(最後在列表中添加的值),那麼它有點棘手的工作,因爲你可以做如下的事情。

在父窗體中添加一個字段。

last_added_value = fields.Char("Last Added Value") 

爲該字段創建onchange方法。

@api.onchange('field_name') 
def onchange_fieldname(self): 
    # there must be many2one field of parent model, use it here. 
    self.parent_model_field.last_added_value = self.field_name 

而在xm領域,你需要這樣寫。

<field name="one2many_field" context="{'default_field_name' : parent.last_added_value}"> 
    <tree string="Title" editable="bottom"> 
     <field name="field_name"/> 
    </tree> 
</field> 

您還需要編寫default_get方法。

@api.model 
def default_get(self,fields): 
    res = super(class_name, self).default_get(fields) 
    last_rec = self.search([('parent_field_id','=',self.parent_field_id.id)], order='id desc', limit=1) 
    if last_rec: 
     res.update({'your_field_name':last_rec.field_value}) 
    return res 
+0

你的例子返回數據庫的最後一個值,是否有可能在樹視圖中添加最後一行,但沒有保存在數據庫中? – Pointer

+0

您在One2many字段中添加新記錄? –

+0

不確定,它可以幫助你https://stackoverflow.com/questions/41185336/set-default-value-while-creating-record-from-one2many-field-odoo –