You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Odoo 15中复制指定产品属性并仅保留选中值

解决方案

你的问题出在代码没精准过滤仅保留用户选中的属性值,而是直接复制了原属性的所有内容。可以按下面的思路修改:

  1. 遍历用户选中的属性行(而非直接取属性本身),这样能同时拿到选中的属性和对应的属性值
  2. 复制属性时,清空原属性的所有值,只保留用户选中的那个值

修正后的代码示例(注意根据你的实际模型字段名调整value_id、value_ids这类字段):

# 遍历每条用户选中的属性行
for attr_line in self.customization_attribute_line_ids:
    original_attribute = attr_line.article_id
    # 获取用户选中的那个属性值,字段名根据你的模型调整
    selected_attr_value = attr_line.value_id

    # 复制属性,仅保留选中的属性值
    new_attribute = original_attribute.copy({
        'name': f"{original_attribute.name} - {self.name}",
        # 用ORM语法清空原有所有值,只添加选中的那个(以Odoo为例,其他框架需对应调整)
        'value_ids': [(6, 0, [selected_attr_value.id])]
    })

关键说明

  • 如果你用的不是Odoo框架,ORM语法可能不同,但核心逻辑一致:复制属性后,把属性值列表替换成仅包含用户选中的那个值
  • 字段名比如value_id(存储选中值)、value_ids(属性的所有值集合)需要和你的实际模型对应,别直接照搬

内容的提问来源于stack exchange,提问作者arleite

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 05:15:35