跳转至内容
  • 版块
  • 标签
  • 热门
  • 用户
  • 群组
皮肤
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(Flatly)
  • 不使用皮肤
折叠

Odoo 中文社区

Felix_ChengF

Felix_Cheng

@Felix_Cheng
关于
帖子
10
主题
0
群组
0
粉丝
0
关注
0

帖子

最新 最佳 有争议的

  • 复制一个widgets 改个名字 自己调用 , 如何实现?? 各种widgets 类型什么意思??
    Felix_ChengF Felix_Cheng

    @like_odoo

    试着来回答:“还有 widgets注册的方式 都是什么意思 ”

    这是在core.js文件web.core module中return 部分, new Registry()作用是 初始化注册器类和她的map属性,用来登记系统的widgets, map={键值对 } || null。Registry类还有get()和add()等方法。

    作用是:当我们在其他module中创建新的widget,注册widget就是往Registry类的map写键值对。e.g: 如web.form_widgets模块中,可以看到一行core.form_widget_registry.add( 'char', FieldChar ), 实质上就是往注册器map中添加键值对{..., 'char': FieldChar, ....},告知系统有个叫FieldChar的widget类。当需要继承Fieldchar时,就可以用代码core.form_widget_registry.get('char') 来获取他的widget类。

    列举一段代码来说明(顺便说一下:第一个问题应该也可以用这个原理来实现, 没试过):
    var core = require('web.core');
    form_widget_registry= core.form_widget_registry
    var FieldChar = form_widget_registry.get('char');
    var MyFieldChar = FieldChar.extend({
    template: 'MyTemplate' // my custom template
    // overriding ........ if you have
    });
    // register widget
    form_widget_registry.add('my_char', MyFieldChar);


  • 关于domain,如何跨类比较?
    Felix_ChengF Felix_Cheng

    @braidtim
    很好的问题 🙂 。
    在服务器端python里定义《B object A字段》 的domain,她定义于数据库水平层级(最底层)。换句话说,python端的domain有效于所有使用《B object A字段》的view。而在view中定义的domain,只对该view有效。
    如果你不需要数据库端给该字段预过滤,就可以考虑直接写在view中(这个是我个人看法)

    有点像required定义于python端和view端的意思, 在python端是表示not null于DB级别,即使代码层create,write也不许该字段为False。而在view端required只是要求在界面该字段中必须填入些内容,对于数据库的约束没有一点影响。

  • 登录

  • 没有帐号? 注册

  • 登录或注册以进行搜索。
  • 第一个帖子
    最后一个帖子
0
  • 版块
  • 标签
  • 热门
  • 用户
  • 群组