我应该添加什么才能正确显示字段的值?

时间:2017-07-25 14:34:02

标签: openerp odoo-10

我应该添加什么来正确显示user_id和cat



    @api.model
    def create(self, vals):
        record=super(test, self).create(vals)

        if vals['total'] > 0:
            vals['date'] = fields.Datetime.now()
                      
            self.env['journal'].create({
                'user_id': record.patient_id,
                'cat': record.cat,})
                ....
                .....




树视图(日记)上的

user_id显示为test.user(6,)  cat显示为cat1

编辑:



class test(models.Model):
    _name = 'test'
    cat = fields.Selection(
        required=True, 
        related='test_type_cat.name',
        store=True,      
    )
    user_id = fields.Many2one('res.users', string='user', readonly=True,)  
    .....
    
    @api.model
    def create(self, vals):
        
        record=super(test, self).create(vals)

        if vals['total'] > 0:
            vals['date'] = fields.Datetime.now()
                      
            self.env['journal'].create({
                'patient_id': record.patient_id.name,
                'cat': record.cat,
                'user_id': record.user_id.name,
                         
            })
            record.total = 0  
        return record




为什么它适用于.name而不是.id? 对于m2o字段,我应该传递整数值吗?如果是这样的话,为什么它在这里使用.name?那么m2m和o2m呢?

1 个答案:

答案 0 :(得分:0)

这对您有用,因为您在模型中创建了一条记录:journal而不是test模型。

如果您转到journal模型,您会发现patient_idChar字段而不是many2one字段。

所以,如果你传递:record.patient_id你正在传递一个对象并且它被转换为char,这就是你得到test(1,)的原因。因为pateint_idtest模型中的many2one字段,所以该字段是object

希望这对你来说有点清楚。