1.修改刀具标准库刀片形状,柄部类型,压紧方式,刀尖特征,字段类型及对应控件显示

2.修改产品页面:刀片形状,柄部类型,压紧方式,刀尖特征,字段类型及对应控件显示
This commit is contained in:
jinling.yang
2023-11-27 17:34:23 +08:00
parent 964618d365
commit ed5f47cc31
10 changed files with 32 additions and 48 deletions

View File

@@ -76,21 +76,20 @@ class CuttingToolModel(models.Model):
integral_run_out_accuracy_max = fields.Char('整体式刀具端跳精度max') integral_run_out_accuracy_max = fields.Char('整体式刀具端跳精度max')
integral_run_out_accuracy_min = fields.Char('整体式刀具端跳精度min') integral_run_out_accuracy_min = fields.Char('整体式刀具端跳精度min')
fit_blade_shape_id = fields.Many2many('maintenance.equipment.image', 'fit_blade_shape_library_rel', fit_blade_shape_id = fields.Many2one('maintenance.equipment.image',
'适配刀片形状', domain=[('type', '=', '刀片形状')]) '适配刀片形状', domain=[('type', '=', '刀片形状')])
suitable_machining_method_ids = fields.Many2many('maintenance.equipment.image', suitable_machining_method_ids = fields.Many2many('maintenance.equipment.image',
'suitable_machining_method_library_rel', 'suitable_machining_method_library_rel',
'适合加工方式', domain=[('type', '=', '加工能力')]) '适合加工方式', domain=[('type', '=', '加工能力')])
blade_tip_characteristics_id = fields.Many2many('maintenance.equipment.image', blade_tip_characteristics_id = fields.Many2one('maintenance.equipment.image',
'blade_tip_character_library_rel',
'刀尖特征', domain=[('type', '=', '刀尖特征')]) '刀尖特征', domain=[('type', '=', '刀尖特征')])
handle_type_ids = fields.Many2many('maintenance.equipment.image', 'handle_type_library_rel', handle_type_id = fields.Many2one('maintenance.equipment.image',
'柄部类型', domain=[('type', '=', '柄部类型')]) '柄部类型', domain=[('type', '=', '柄部类型')])
cutting_direction_ids = fields.Many2many('maintenance.equipment.image', 'cutting_direction_library_rel', cutting_direction_ids = fields.Many2many('maintenance.equipment.image', 'cutting_direction_library_rel',
'走刀方向', domain=[('type', '=', '走刀方向')]) '走刀方向', domain=[('type', '=', '走刀方向')])
suitable_coolant_ids = fields.Many2many('maintenance.equipment.image', 'suitable_coolant_library_rel', suitable_coolant_ids = fields.Many2many('maintenance.equipment.image', 'suitable_coolant_library_rel',
'适合冷却液', domain=[('type', '=', '冷却液')]) '适合冷却液', domain=[('type', '=', '冷却液')])
compaction_way_ids = fields.Many2many('maintenance.equipment.image', 'compaction_way_library_rel', compaction_way_id = fields.Many2one('maintenance.equipment.image',
'压紧方式', domain=[('type', '=', '压紧方式')]) '压紧方式', domain=[('type', '=', '压紧方式')])
integral_tool_basic_parameters_ids = fields.One2many('sf.tool.materials.basic.parameters', integral_tool_basic_parameters_ids = fields.One2many('sf.tool.materials.basic.parameters',
'standard_library_id', string='整体式刀具基本参数') 'standard_library_id', string='整体式刀具基本参数')

View File

@@ -170,7 +170,7 @@
</group> </group>
<group string="适配刀片形状" <group string="适配刀片形状"
attrs="{'invisible': [('cutting_tool_type', 'in', ('刀柄','夹头','整体式刀具',False))]}"> attrs="{'invisible': [('cutting_tool_type', 'in', ('刀柄','夹头','整体式刀具',False))]}">
<field name="fit_blade_shape_id" string="" widget="custom_many2many_checkboxes"/> <field name="fit_blade_shape_id" string="" widget="many2one_radio"/>
</group> </group>
<group string="适合加工方式" <group string="适合加工方式"
attrs="{'invisible': [('cutting_tool_type', 'not in', ('整体式刀具','刀杆','刀盘','刀片'))]}"> attrs="{'invisible': [('cutting_tool_type', 'not in', ('整体式刀具','刀杆','刀盘','刀片'))]}">
@@ -180,15 +180,15 @@
<group string="刀尖特征" <group string="刀尖特征"
attrs="{'invisible': [('cutting_tool_type', 'not in', ('整体式刀具','刀杆','刀盘','刀片'))]}"> attrs="{'invisible': [('cutting_tool_type', 'not in', ('整体式刀具','刀杆','刀盘','刀片'))]}">
<field name="blade_tip_characteristics_id" string="" <field name="blade_tip_characteristics_id" string=""
widget="custom_many2many_checkboxes"/> widget="many2one_radio"/>
</group> </group>
<group attrs="{'invisible': [('cutting_tool_type', 'not in', ('整体式刀具','刀杆','刀盘','刀片'))]}"> <group attrs="{'invisible': [('cutting_tool_type', 'not in', ('整体式刀具','刀杆','刀盘','刀片'))]}">
<group string="柄部类型" attrs="{'invisible': [('cutting_tool_type', '!=', '整体式刀具')]}"> <group string="柄部类型" attrs="{'invisible': [('cutting_tool_type', '!=', '整体式刀具')]}">
<field name="handle_type_ids" string="" widget="custom_many2many_checkboxes"/> <field name="handle_type_id" string="" widget="many2one_radio"/>
</group> </group>
<group string="压紧方式" <group string="压紧方式"
attrs="{'invisible': [('cutting_tool_type', 'not in', ('刀杆','刀盘'))]}"> attrs="{'invisible': [('cutting_tool_type', 'not in', ('刀杆','刀盘'))]}">
<field name="compaction_way_ids" string="" widget="custom_many2many_checkboxes"/> <field name="compaction_way_ids" string="" widget="many2one_radio"/>
</group> </group>
</group> </group>
<group attrs="{'invisible': [('cutting_tool_type', 'not in', ('整体式刀具','刀杆','刀盘','刀片'))]}"> <group attrs="{'invisible': [('cutting_tool_type', 'not in', ('整体式刀具','刀杆','刀盘','刀片'))]}">

View File

@@ -405,7 +405,7 @@
<group attrs="{'invisible': [('cutting_tool_type', 'not in', ('整体式刀具','刀杆','刀盘','刀片'))]}"> <group attrs="{'invisible': [('cutting_tool_type', 'not in', ('整体式刀具','刀杆','刀盘','刀片'))]}">
<group string="柄部类型" <group string="柄部类型"
attrs="{'invisible': [('cutting_tool_type', '!=', '整体式刀具')]}"> attrs="{'invisible': [('cutting_tool_type', '!=', '整体式刀具')]}">
<field name="handle_type_ids" string="" widget="custom_many2many_checkboxes"/> <field name="handle_type_id" string="" widget="many2one_radio"/>
</group> </group>
<group string="压紧方式" <group string="压紧方式"
attrs="{'invisible': [('cutting_tool_type', 'not in', ('刀杆','刀盘'))]}"> attrs="{'invisible': [('cutting_tool_type', 'not in', ('刀杆','刀盘'))]}">

View File

@@ -87,7 +87,7 @@ class ResProductMo(models.Model):
cutting_tool_run_out_accuracy_max = fields.Float('端跳精度max', digits=(6, 1)) cutting_tool_run_out_accuracy_max = fields.Float('端跳精度max', digits=(6, 1))
cutting_tool_run_out_accuracy_min = fields.Float('端跳精度min', digits=(6, 1)) cutting_tool_run_out_accuracy_min = fields.Float('端跳精度min', digits=(6, 1))
cutting_tool_blade_tip_working_size = fields.Char('刀尖处理尺寸(R半径mm/倒角)', size=20) cutting_tool_blade_tip_working_size = fields.Char('刀尖处理尺寸(R半径mm/倒角)', size=20)
fit_blade_shape_id = fields.Many2many('maintenance.equipment.image', 'rel_fit_blade_shape_product_template', fit_blade_shape_id = fields.Many2one('maintenance.equipment.image',
'适配刀片形状', domain=[('type', '=', '刀片形状')]) '适配刀片形状', domain=[('type', '=', '刀片形状')])
suitable_machining_method_ids = fields.Many2many('maintenance.equipment.image', suitable_machining_method_ids = fields.Many2many('maintenance.equipment.image',
'rel_machining_product_template', '适合加工方式', 'rel_machining_product_template', '适合加工方式',
@@ -95,8 +95,7 @@ class ResProductMo(models.Model):
blade_tip_characteristics_id = fields.Many2many('maintenance.equipment.image', blade_tip_characteristics_id = fields.Many2many('maintenance.equipment.image',
'rel_blade_tip_product_template', '刀尖特征', 'rel_blade_tip_product_template', '刀尖特征',
domain=[('type', '=', '刀尖特征')]) domain=[('type', '=', '刀尖特征')])
handle_type_ids = fields.Many2many('maintenance.equipment.image', 'rel_handle_product_template', '柄部类型', handle_type_id = fields.Many2one('maintenance.equipment.image', '柄部类型',domain=[('type', '=', '柄部类型')])
domain=[('type', '=', '柄部类型')])
cutting_direction_ids = fields.Many2many('maintenance.equipment.image', 'rel_cutting_product_template', cutting_direction_ids = fields.Many2many('maintenance.equipment.image', 'rel_cutting_product_template',
'走刀方向', domain=[('type', '=', '走刀方向')]) '走刀方向', domain=[('type', '=', '走刀方向')])
suitable_coolant_ids = fields.Many2many('maintenance.equipment.image', 'rel_coolant_product_template', suitable_coolant_ids = fields.Many2many('maintenance.equipment.image', 'rel_coolant_product_template',
@@ -141,7 +140,7 @@ class ResProductMo(models.Model):
item.fit_blade_shape_id = False item.fit_blade_shape_id = False
item.suitable_machining_method_ids = False item.suitable_machining_method_ids = False
item.blade_tip_characteristics_id = False item.blade_tip_characteristics_id = False
item.handle_type_ids = False item.handle_type_id = False
item.cutting_direction_ids = False item.cutting_direction_ids = False
item.suitable_coolant_ids = False item.suitable_coolant_ids = False
item.compaction_way_ids = False item.compaction_way_ids = False
@@ -292,9 +291,7 @@ class ResProductMo(models.Model):
self.cutting_tool_model_id.blade_tip_characteristics_id \ self.cutting_tool_model_id.blade_tip_characteristics_id \
else [(6, 0, self.cutting_tool_model_id.blade_tip_characteristics_id.ids)] else [(6, 0, self.cutting_tool_model_id.blade_tip_characteristics_id.ids)]
self.handle_type_ids = [(6, 0, self.handle_type_id = self.cutting_tool_model_id.handle_type_id
[])] if not self.cutting_tool_model_id.handle_type_ids else [
(6, 0, self.cutting_tool_model_id.handle_type_ids.ids)]
self.cutting_direction_ids = [(6, 0, self.cutting_direction_ids = [(6, 0,
[])] if not self.cutting_tool_model_id.cutting_direction_ids else [ [])] if not self.cutting_tool_model_id.cutting_direction_ids else [
@@ -346,7 +343,7 @@ class ResProductMo(models.Model):
self.feed_per_tooth_ids = False self.feed_per_tooth_ids = False
@api.constrains('fit_blade_shape_id', 'suitable_machining_method_ids', 'blade_tip_characteristics_id', @api.constrains('fit_blade_shape_id', 'suitable_machining_method_ids', 'blade_tip_characteristics_id',
'handle_type_ids', 'cutting_direction_ids', 'suitable_coolant_ids', 'compaction_way_ids') 'handle_type_id', 'cutting_direction_ids', 'suitable_coolant_ids', 'compaction_way_ids')
def _check_cutting_tool_ability(self): def _check_cutting_tool_ability(self):
if self.cutting_tool_type in ['整体式刀具', '刀片', '刀杆', '刀盘']: if self.cutting_tool_type in ['整体式刀具', '刀片', '刀杆', '刀盘']:
if self.cutting_tool_type in ['刀片', '刀杆', '刀盘']: if self.cutting_tool_type in ['刀片', '刀杆', '刀盘']:
@@ -359,7 +356,7 @@ class ResProductMo(models.Model):
if not self.suitable_coolant_ids: if not self.suitable_coolant_ids:
raise ValidationError("请选择适合冷却液") raise ValidationError("请选择适合冷却液")
elif self.cutting_tool_type == '整体式刀具': elif self.cutting_tool_type == '整体式刀具':
if not self.handle_type_ids: if not self.handle_type_id:
raise ValidationError("请选择柄部类型") raise ValidationError("请选择柄部类型")
if not self.suitable_coolant_ids: if not self.suitable_coolant_ids:
raise ValidationError("请选择适合冷却液") raise ValidationError("请选择适合冷却液")

View File

@@ -1,9 +1,7 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
import logging
import json import json
import base64 import base64
import logging
import os
from datetime import date, timedelta
from odoo import http from odoo import http
from odoo.http import request from odoo.http import request

View File

@@ -1820,15 +1820,13 @@ class Cutting_tool_standard_library(models.Model):
"cutter_pad_ids": [(6, 0, [])] if not item.get('cutter_pad_codes') else self.env[ "cutter_pad_ids": [(6, 0, [])] if not item.get('cutter_pad_codes') else self.env[
'sf.cutting_tool.standard.library']._get_ids(item['cutter_pad_codes'], 'sf.cutting_tool.standard.library']._get_ids(item['cutter_pad_codes'],
result['factory_short_name']), result['factory_short_name']),
"fit_blade_shape_id": [(6, 0, [])] if not item.get('fit_blade_shape') else self.env[ "fit_blade_shape_id": item.get('fit_blade_shape') ,
'maintenance.equipment.image']._get_ids(item['fit_blade_shape']),
"suitable_machining_method_ids": [(6, 0, [])] if not item.get( "suitable_machining_method_ids": [(6, 0, [])] if not item.get(
'suitable_machining_methods') else self.env['maintenance.equipment.image']._get_ids( 'suitable_machining_methods') else self.env['maintenance.equipment.image']._get_ids(
item['suitable_machining_methods']), item['suitable_machining_methods']),
"blade_tip_characteristics_id": [(6, 0, [])] if not item.get('blade_tip_characteristics') else "blade_tip_characteristics_id": [(6, 0, [])] if not item.get('blade_tip_characteristics') else
self.env['maintenance.equipment.image']._get_ids(item['blade_tip_characteristics']), self.env['maintenance.equipment.image']._get_ids(item['blade_tip_characteristics']),
"handle_type_ids": [(6, 0, [])] if not item.get('handle_type') else self.env[ "handle_type_id": item.get('handle_type'),
'maintenance.equipment.image']._get_ids(item['handle_type']),
"cutting_direction_ids": [(6, 0, [])] if not item.get('cutting_direction') else self.env[ "cutting_direction_ids": [(6, 0, [])] if not item.get('cutting_direction') else self.env[
'maintenance.equipment.image']._get_ids(item['cutting_direction']), 'maintenance.equipment.image']._get_ids(item['cutting_direction']),
"suitable_coolant_ids": [(6, 0, [])] if not item.get('suitable_coolant') else self.env[ "suitable_coolant_ids": [(6, 0, [])] if not item.get('suitable_coolant') else self.env[
@@ -1868,15 +1866,13 @@ class Cutting_tool_standard_library(models.Model):
"cutter_pad_ids": [(6, 0, [])] if not item.get('cutter_pad_codes') else self.env[ "cutter_pad_ids": [(6, 0, [])] if not item.get('cutter_pad_codes') else self.env[
'sf.cutting_tool.standard.library']._get_ids(item['cutter_pad_codes'], 'sf.cutting_tool.standard.library']._get_ids(item['cutter_pad_codes'],
result['factory_short_name']), result['factory_short_name']),
"fit_blade_shape_id": [(6, 0, [])] if not item.get('fit_blade_shape') else self.env[ "fit_blade_shape_id": item.get('fit_blade_shape'),
'maintenance.equipment.image']._get_ids(item['fit_blade_shape']),
"suitable_machining_method_ids": [(6, 0, [])] if not item.get( "suitable_machining_method_ids": [(6, 0, [])] if not item.get(
'suitable_machining_methods') else self.env['maintenance.equipment.image']._get_ids( 'suitable_machining_methods') else self.env['maintenance.equipment.image']._get_ids(
item['suitable_machining_methods']), item['suitable_machining_methods']),
"blade_tip_characteristics_id": [(6, 0, [])] if not item.get('blade_tip_characteristics') else "blade_tip_characteristics_id": [(6, 0, [])] if not item.get('blade_tip_characteristics') else
self.env['maintenance.equipment.image']._get_ids(item['blade_tip_characteristics']), self.env['maintenance.equipment.image']._get_ids(item['blade_tip_characteristics']),
"handle_type_ids": [(6, 0, [])] if not item.get('handle_type') else self.env[ "handle_type_id":item.get('handle_type'),
'maintenance.equipment.image']._get_ids(item['handle_type']),
"cutting_direction_ids": [(6, 0, [])] if not item.get('cutting_direction') else self.env[ "cutting_direction_ids": [(6, 0, [])] if not item.get('cutting_direction') else self.env[
'maintenance.equipment.image']._get_ids(item['cutting_direction']), 'maintenance.equipment.image']._get_ids(item['cutting_direction']),
"suitable_coolant_ids": [(6, 0, [])] if not item.get('suitable_coolant') else self.env[ "suitable_coolant_ids": [(6, 0, [])] if not item.get('suitable_coolant') else self.env[
@@ -1985,15 +1981,13 @@ class Cutting_tool_standard_library(models.Model):
"cutter_pad_ids": [(6, 0, [])] if not item.get('cutter_pad_codes') else self.env[ "cutter_pad_ids": [(6, 0, [])] if not item.get('cutter_pad_codes') else self.env[
'sf.cutting_tool.standard.library']._get_ids(item['cutter_pad_codes'], 'sf.cutting_tool.standard.library']._get_ids(item['cutter_pad_codes'],
result['factory_short_name']), result['factory_short_name']),
"fit_blade_shape_id": [(6, 0, [])] if not item.get('fit_blade_shape') else self.env[ "fit_blade_shape_id": item.get('fit_blade_shape'),
'maintenance.equipment.image']._get_ids(item['fit_blade_shape']),
"suitable_machining_method_ids": [(6, 0, [])] if not item.get( "suitable_machining_method_ids": [(6, 0, [])] if not item.get(
'suitable_machining_method') else self.env['maintenance.equipment.image']._get_ids( 'suitable_machining_method') else self.env['maintenance.equipment.image']._get_ids(
item['suitable_machining_method']), item['suitable_machining_method']),
"blade_tip_characteristics_id": [(6, 0, [])] if not item.get('blade_tip_characteristics') else "blade_tip_characteristics_id": [(6, 0, [])] if not item.get('blade_tip_characteristics') else
self.env['maintenance.equipment.image']._get_ids(item['blade_tip_characteristics']), self.env['maintenance.equipment.image']._get_ids(item['blade_tip_characteristics']),
"handle_type_ids": [(6, 0, [])] if not item.get('handle_type') else self.env[ "handle_type_id": item.get('handle_type'),
'maintenance.equipment.image']._get_ids(item['handle_type']),
"cutting_direction_ids": [(6, 0, [])] if not item.get('cutting_direction') else self.env[ "cutting_direction_ids": [(6, 0, [])] if not item.get('cutting_direction') else self.env[
'maintenance.equipment.image']._get_ids(item['cutting_direction']), 'maintenance.equipment.image']._get_ids(item['cutting_direction']),
"suitable_coolant_ids": [(6, 0, [])] if not item.get('suitable_coolant') else self.env[ "suitable_coolant_ids": [(6, 0, [])] if not item.get('suitable_coolant') else self.env[
@@ -2033,15 +2027,13 @@ class Cutting_tool_standard_library(models.Model):
"cutter_pad_ids": [(6, 0, [])] if not item.get('cutter_pad_codes') else self.env[ "cutter_pad_ids": [(6, 0, [])] if not item.get('cutter_pad_codes') else self.env[
'sf.cutting_tool.standard.library']._get_ids(item['cutter_pad_codes'], 'sf.cutting_tool.standard.library']._get_ids(item['cutter_pad_codes'],
result['factory_short_name']), result['factory_short_name']),
"fit_blade_shape_id": [(6, 0, [])] if not item.get('fit_blade_shape') else self.env[ "fit_blade_shape_id": item.get('fit_blade_shape'),
'maintenance.equipment.image']._get_ids(item['fit_blade_shape']),
"suitable_machining_method_ids": [(6, 0, [])] if not item.get( "suitable_machining_method_ids": [(6, 0, [])] if not item.get(
'suitable_machining_methods') else self.env['maintenance.equipment.image']._get_ids( 'suitable_machining_methods') else self.env['maintenance.equipment.image']._get_ids(
item['suitable_machining_methods']), item['suitable_machining_methods']),
"blade_tip_characteristics_id": [(6, 0, [])] if not item.get('blade_tip_characteristics') else "blade_tip_characteristics_id": [(6, 0, [])] if not item.get('blade_tip_characteristics') else
self.env['maintenance.equipment.image']._get_ids(item['blade_tip_characteristics']), self.env['maintenance.equipment.image']._get_ids(item['blade_tip_characteristics']),
"handle_type_ids": [(6, 0, [])] if not item.get('handle_type') else self.env[ "handle_type_id": item.get('handle_type'),
'maintenance.equipment.image']._get_ids(item['handle_type']),
"cutting_direction_ids": [(6, 0, [])] if not item.get('cutting_direction') else self.env[ "cutting_direction_ids": [(6, 0, [])] if not item.get('cutting_direction') else self.env[
'maintenance.equipment.image']._get_ids(item['cutting_direction']), 'maintenance.equipment.image']._get_ids(item['cutting_direction']),
"suitable_coolant_ids": [(6, 0, [])] if not item.get('suitable_coolant') else self.env[ "suitable_coolant_ids": [(6, 0, [])] if not item.get('suitable_coolant') else self.env[

View File

@@ -89,9 +89,9 @@ class FunctionalCuttingToolEntity(models.Model):
blade_tip_characteristics_id = fields.Many2many( blade_tip_characteristics_id = fields.Many2many(
'maintenance.equipment.image', 'rel_blade_tip_product_template_tool_entity', '刀尖特征', 'maintenance.equipment.image', 'rel_blade_tip_product_template_tool_entity', '刀尖特征',
domain=[('type', '=', '刀尖特征')], related='cutting_tool_integral_model_id.blade_tip_characteristics_id') domain=[('type', '=', '刀尖特征')], related='cutting_tool_integral_model_id.blade_tip_characteristics_id')
handle_type_ids = fields.Many2many( handle_type_id = fields.Many2one(
'maintenance.equipment.image', 'rel_handle_product_template_tool_entity', '柄部类型', 'maintenance.equipment.image', '柄部类型',
domain=[('type', '=', '柄部类型')], related='cutting_tool_integral_model_id.handle_type_ids') domain=[('type', '=', '柄部类型')], related='cutting_tool_integral_model_id.handle_type_id')
cutting_direction_ids = fields.Many2many( cutting_direction_ids = fields.Many2many(
'maintenance.equipment.image', 'rel_cutting_product_template_tool_entity', '走刀方向', 'maintenance.equipment.image', 'rel_cutting_product_template_tool_entity', '走刀方向',
domain=[('type', '=', '走刀方向')], related='cutting_tool_integral_model_id.cutting_direction_ids') domain=[('type', '=', '走刀方向')], related='cutting_tool_integral_model_id.cutting_direction_ids')

View File

@@ -102,9 +102,7 @@ class SfToolMaterialSearch(models.Model):
blade_tip_characteristics_id = fields.Many2many('maintenance.equipment.image', blade_tip_characteristics_id = fields.Many2many('maintenance.equipment.image',
'rel_blade_tip_product_template_material_search', '刀尖特征', 'rel_blade_tip_product_template_material_search', '刀尖特征',
domain=[('type', '=', '刀尖特征')]) domain=[('type', '=', '刀尖特征')])
handle_type_ids = fields.Many2many('maintenance.equipment.image', handle_type_id = fields.Many2many('maintenance.equipment.image', '柄部类型',domain=[('type', '=', '柄部类型')])
'rel_handle_product_template_material_search', '柄部类型',
domain=[('type', '=', '柄部类型')])
cutting_direction_ids = fields.Many2many('maintenance.equipment.image', cutting_direction_ids = fields.Many2many('maintenance.equipment.image',
'rel_cutting_product_template_material_search', '走刀方向', 'rel_cutting_product_template_material_search', '走刀方向',
domain=[('type', '=', '走刀方向')]) domain=[('type', '=', '走刀方向')])

View File

@@ -110,8 +110,8 @@
domain="[('id','in',blade_tip_characteristics_id)]"/> domain="[('id','in',blade_tip_characteristics_id)]"/>
</group> </group>
<group string="柄部类型"> <group string="柄部类型">
<field name="handle_type_ids" string="" widget="custom_many2many_checkboxes" <field name="handle_type_id" string="" widget="many2one_radio"
domain="[('id','in',handle_type_ids)]"/> domain="[('id','in',handle_type_id)]"/>
</group> </group>
</group> </group>
<group> <group>

View File

@@ -231,10 +231,10 @@
</group> </group>
<group> <group>
<group string="刀尖特征"> <group string="刀尖特征">
<field name="blade_tip_characteristics_id" string="" widget="custom_many2many_checkboxes"/> <field name="blade_tip_characteristics_id" string="" widget="many2one_radio"/>
</group> </group>
<group string="柄部类型"> <group string="柄部类型">
<field name="handle_type_ids" string="" widget="custom_many2many_checkboxes"/> <field name="handle_type_id" string="" widget="many2one_radio"/>
</group> </group>
</group> </group>
<group> <group>