• DTCloud 复杂字段类型


    1. 引用类型 “related”
      字段=fields.类型(related=“某个字段.类字段”,store=true/false) #默认不存储 store=False
    user_email = fields.Char('User Email', related='user_id.email', readonly=True)
    user_login = fields.Char('User Login', related='user_id.login', readonly=True)
    
    • 1
    • 2
    1. 引用类型 “reference”
      Reference对应pg的字段类型为不定长的varchar
      reference是比related更高级的引用字段,可以指定该字段引用那些模型范围内的模型的哪些字段的值,范围更广。
    @api.model
    def _select_objects(self):
        records = self.env['ir.model'].search([])
        return [(record.model, record.name) for record in records] + [('', '')]
    
    id_object = fields.Reference(string='内部参考', selection='_select_objects')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    1. 选择项 “selection”
      Selection字段类型一般作为下拉列表显示,selection 的选项内容基本是固定,但是针对一些特殊要求,根据权限组显示不同的 selection 内容,也可以通过动态创建选项的内容,下面简单介绍Selection的三种使用案例。
    • 固定的 Selection 内容
    DICT_STYLE = [
        ('样式一', '样式一'),
        ('样式二', '样式二'),
        ('样式三', '样式三')
    ]
    
    # 1、固定selection
    
    type = fields.Selection([
        ('上架', '上架'),
        ('下架', '下架'),
    ], string='类型', default='上架')
    
    style = fields.Selection(DICT_STYLE, string='样式', default='样式一')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 根据权限组显示不同的 selection 内容
      指定属性selection=’_selection_filter’表示引用_selection_filter函数进行不同权限组之间的内容显示。
    # 你根据权限组显示不同的 selection 内容
    
    add_type = fields.Selection(selection='_selection_filter', string='类型2')
    
    @api.model
    def _selection_filter(self):
        """
        根据权限组显示不同的Selection值
        """
        res_filter = [
            ('数学', '数学'),
            ('语文', '语文'),
        ]
        if self.user_has_groups('base.group_system'):
            res_filter += [('英语', '英语')]
        elif self.user_has_groups('Amos_Demo.amos_demo_user'):
            res_filter = res_filter
        else:
            res_filter = []
        return res_filter
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    在这里插入图片描述

    • 动态创建 selection 内容
    filter = fields.Selection(string=u'等级', selection='_selection_filter2')
    
    @api.model
    def _selection_filter2(self):
        res_filter = []
        filter_list = self.env['ir.config_parameter'].search([('key', 'like', 'issue_filter_')])
        for filter in filter_list:
            res_filter.append((filter.key[13:], _(filter.value)))
        return res_filter
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    <?xml version="1.0" encoding="utf-8"?>
    <dtcloud>
        <data noupdate="0">
            <record model="ir.config_parameter" id="object_amos_selection_1">
                <field name="key">issue_filter_one</field>
                <field name="value">一级</field>
            </record>
    
            <record model="ir.config_parameter" id="object_amos_selection_2">
                <field name="key">issue_filter_two</field>
                <field name="value">二级</field>
            </record>
    
            <record model="ir.config_parameter" id="object_amos_selection_3">
                <field name="key">issue_filter_three</field>
                <field name="value">三级</field>
            </record>
        </data>
    </dtcloud>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    在这里插入图片描述

  • 相关阅读:
    C++ 不知树系列之初识树(树的邻接矩阵、双亲孩子表示法……)
    IDEA中的properties文件中文乱码
    以太坊搭建私有链(非常详细!!!)
    代码随想录刷题Day53 | 1143. 最长公共子序列 | 1035. 不相交的线 | 53. 最大子数组和
    flutter 创建插件
    论文翻译:2022_PACDNN: A phase-aware composite deep neural network for speech enhancement
    C# Onnx DIS高精度图像二类分割
    前后台同一个端口部署项目
    SQLAlchemy学习-12.查询之 order_by 按desc 降序排序
    操作BLOB类型的字段及高效的批量插入操作
  • 原文地址:https://blog.csdn.net/ekcchina/article/details/125480708