【问题标题】:How to set default values to fields in Odoo 14如何在 Odoo 14 中为字段设置默认值
【发布时间】:2021-04-02 20:37:36
【问题描述】:

我添加了一个归档公司(这是一个字符字段),在创建付款时,我想设置默认值。 创建新付款时,该值未显示在表单视图中。但是,在打印 'my_company' 时,我得到了正确的结果。 请问怎么了?

class AccountPayment(models.Model):
_inherit = "account.payment"    

 @api.model
    def get_company(self):
        if self.move_type == 'in_invoice':
            my_company = self.env.user.company_id.name
            self.company = my_company

        else:
            self.company = ''

    company = fields.Char(string='Company   ', default=get_company)

谢谢。

【问题讨论】:

  • 试试这个:company_id = fields.Many2one('res.company', 'Company', default=lambda self: self.env['res.users'].browse(self.env.uid ).company_id.id) 这将获取当前登录用户的公司并在该字段中分配它
  • @Muhammad Yusuf,我添加的字段是 char 字段,我不会将其更改为 Many2one 字段,此外,我还有另一个 move_type 条件。这就是我添加函数“get_company”的原因,我可以在其中添加条件。谢谢。
  • 新建付款时,move_type值为空,所以结果总是空引号。
  • @Tiki ,是的,另外,当我尝试使用时问题仍然存在:如果 self.payment_type == 'outbound' ,我怎样才能获得区分供应商和客户付款的正确条件?

标签: javascript python xml odoo


【解决方案1】:

您需要返回值。 这是正确的代码

class AccountPayment(models.Model):
     _inherit = "account.payment"    


    def get_company(self):
        if self.move_type == 'in_invoice':
            my_company = self.env.user.company_id.name
            return my_company
        else:
            return None

    company = fields.Char(string='Company Name', default=get_company)

【讨论】:

  • if self.move_type == 'in_invoice' 的条件仍然有问题,它没有进入 if 条件;我试过:如果 self.payment_type == 'outbound' ,我遇到了同样的问题。请问有什么帮助吗?谢谢
  • 我在 payment_type 中总是得到一个 'False' 值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多