【问题标题】:filter many2one field with multi condition domain odoo-12过滤具有多条件域odoo-12的many2one字段
【发布时间】:2020-06-22 09:47:59
【问题描述】:

我想根据serial_no != 0的device_model和product_qty过滤serial_no。 我的代码:

class EmployeeCustody(models.Model):
    _name = 'employee.custody'

    name = fields.Char(required=True)
    device_model = fields.Many2one('product.product', string='Device Model', required=True)
    serial_no = fields.Many2one('stock.production.lot', string='Serial Number',
                                domain="[('product_id', '=', device_model),('product_qty', '!=', 0)]")


class ProductionLot(models.Model):
    _name = 'stock.production.lot'

    name = fields.Char(required=True)
    product_id = fields.Many2one('product.product', 'Product', required=True)
    product_qty = fields.Float('Quantity', default=0)

我根据 device_model 得到了 serial_no,但有所有数量(我不想要数量 = 0)

【问题讨论】:

  • Float 字段的默认值为0.0,如果product_qty 被重新定义为非存储计算字段,则条件将不起作用。
  • product_qty 的所有值都是 0 或 1。它没有任何值。

标签: python odoo


【解决方案1】:

默认情况下,Float字段的值为None

所以你可以试试

domain=['&',('product_id', '=', device_model),('product_qty', 'not in', (0, None))]

product_qty = fields.Float('Quantity', default=0)

希望它可以提供帮助,因为我无法测试我的解决方案

【讨论】:

  • 另一件事,'&' 是域中的默认值,因此您可以在这种情况下将其删除
  • @CuongNmtm 你可以在Relational fields看到域可以是一个字符串,Account/partner.py#402有一个例子
  • @Kenly 好的,我明白了,他们对包含变量的域使用字符串
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多