我在product.pricelist.item
class product_pricelist_item(models.Model):
_inherit = 'product.pricelist.item'
myfield = fields.Boolean(string="CheckMark")
现在product.pricelist.item
中有多行。
(确认)
我希望用户不允许True
多个myfield
一个字段一次只能True
。
我尝试在product.pricelist.item
中执行此操作,向其提供一个计数器并将计数器传递给myfields
True
的数量。
但是这给了我错误。
全球名称' _get_counter'未定义
def _get_counter(self):
for r in self:
p=[]
p= r.env['product.pricelist.item'].search_read([('myfield', '=', True)], ['myfield'])
counter = len(p)
return counter
@api.constrains('myfield')
def _check_myfield(self):
counter = _get_counter(self)
for r in self:
if counter > 1:
raise exceptions.ValidationError("Multiple myfield In a PriceList of a Product is not allowed.")
现在第二个问题是: -
创建pricelist-item并在价目表中单击“保存”时,它不会反映数据库中的数据。单击价格表时保存它会反映数据......为什么会这样?
答案 0 :(得分:3)
使用self
,我们可以调用当前类的方法。
尝试使用以下代码:
替换代码
counter = _get_counter(self)
与
counter = self._get_counter()
答案 1 :(得分:1)
_get_counter
中的循环不会影响结果,搜索也不依赖于记录,因此您可以使用:
def _get_counter(self):
pricelist_obj = self.env['product.pricelist.item']
counter = len(pricelist_obj.search_read([('myfield', '=', True)], ['myfield']))
return counter
@api.constrains('myfield')
def _check_myfield(self):
counter = self._get_counter()
if counter > 1:
raise exceptions.ValidationError("Multiple myfield In a PriceList of a Product is not allowed.")