【问题标题】:Get values from a parent field - Odoo10从父字段获取值 - Odoo10
【发布时间】:2018-06-04 19:28:24
【问题描述】:

我在一个表单中有 2 个字段 F1 和 F2。字段 F1 是一个弹出窗口。在弹出时,它还有 2 个字段 F3 和 F4。我需要访问存储在 F3 中的值并将其存储在 F2 中。

附加图片可能有助于理解工作流程。 Click to view this image

这里有一些关于我的问题的更多细节

这是我尝试过的。

class JobJob(models.Model):
    _name='job.job'
    address = field.Char('Address')


Class Dailylog(models.Model):
    job_id = fields.Many2one('job.job', 'Job')
    def check(self):
        address = fileds.Char(related='job_id.address')

【问题讨论】:

    标签: python odoo odoo-10


    【解决方案1】:

    如果你的问题是正确的,你想使用关系字段。 在我的代码中,您使用与MyModel 的关系来获取f3f4,因此您不必存储它。 (当然可以,如果在关系字段定义中取store=True,当不存储时,不能在那个字段中搜索。)

    class MyModel(models.Model):
        _name = 'my.model'
    
        f3 = fields.Char(string='F3')
        f4 = fields.Char(string='F4')
    
    class MyOtherModel(models.Model):
        _name = 'my.other.model'
    
        f1 = fields.Many2one('my.model', 'F1')
        f2 = fields.Char('F2')
        f3 = fields.Char(related='f1.f3')
        f4 = fields.Char(related='f1.f4')
    

    现在您拥有两个字段(f3f4),很容易在表单上显示它们。

    编辑问题已更改

    TL;DR:您不能在方法中定义字段。

    我知道这只是一个逻辑字段,但您的代码是对关系模型的一般更改。如果你能做到这一点,这意味着你可以随时更改数据库模式。所以有时地址字段存在一次,有时不存在……但是当它不存在时,它会将较早加载的数据擦除到该字段中。这可能存在巨大的不一致风险。

    【讨论】:

    • 嘿!谢谢你的反馈。现在很清楚,这应该有效。但是当我尝试时,我得到“RuntimeError:超出最大递归深度”。我已经用我尝试过的方法编辑了我的问题,请你看看。这两个类都在不同的 py 文件中。
    • @user3571631 hahoooo,你对我的解决方案有什么意见吗?我真的很兴奋,它工作正常吗?
    • 非常好。您应该接受我的回答(只需单击右侧的管道即可回答)。有一个美好的一天,享受自己! :)
    猜你喜欢
    • 2018-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-13
    • 2012-05-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多