首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Odoo防止One2many字段中选定的重复记录

Odoo防止One2many字段中选定的重复记录
EN

Stack Overflow用户
提问于 2021-12-21 12:09:06
回答 1查看 658关注 0票数 3

我希望防止所选记录再次显示在组合框中。

正如您所看到的,在我之前选择了该记录之后,710 - Maleo显示再次出现。

One2many字段的字段声明

代码语言:javascript
运行
复制
class RMReservationOrderLine(models.Model):
    _name = "rm.reservation.order.line"
    _description = "Reservation Order Line"

    room_line_ids = fields.One2many('rm.reservation.room.line', 'order_id', string='Rooms')

One2many字段的模型类

代码语言:javascript
运行
复制
class RMReservationRoomLine(models.Model):
    _name = "rm.reservation.room.line"
    _description = "Reservation Room Line"

    order_id = fields.Many2one('rm.reservation.order.line', string='Order', required=True, ondelete='cascade')
    room_id = fields.Many2one('rm.room', string='Room', required=True)

更新

因为我的One2many字段的模型类只有一个字段,room_id,所以我只是将One2many字段更改为Many2many。因为默认情况下,Many2many字段防止重复记录。

但是,如果我使用One2many字段,那么我仍然想知道如何防止重复记录,以防One2many的模型类中有超过一个字段。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-21 15:41:47

我觉得这案子跟你想要的一样。

我已经修改了销售订单,所以当销售订单行中的产品已经被选中时,产品将不会再次显示在选定的产品中。

我使用了odoo-14并继承了sales.order.line,并将函数product_id_change()修改为:

代码语言:javascript
运行
复制
@api.onchange('product_id')
def product_id_change(self):
    values = super(SaleOrderLine, self).product_id_change()
    filter_product_ids = [data.product_id.id for data in self.order_id.order_line]
    if values is None:
        values = {}
    values['domain'] = {'product_id' : [('id', 'not in', filter_product_ids)]}
    return values
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70435234

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档