跳转至内容
  • 版块
  • 标签
  • 热门
  • 用户
  • 群组
皮肤
  • 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 中文社区

  1. 主页
  2. 版块
  3. Odoo 开发与实施交流
  4. OPENERP 库存管理源码分析(Property Fields 个人理解)

OPENERP 库存管理源码分析(Property Fields 个人理解)

已定时 已固定 已锁定 已移动 Odoo 开发与实施交流
6 帖子 4 发布者 8.1k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • L 离线
    L 离线
    leetaizhu
    写于 最后由 编辑
    #1

    声明一个属性 / Declaring a propertyfields.property 是一个属性 它是一个特殊的字段 / A property is a special field: fields.property.这之后你需要在XML文件为属性建立一个默认值 / Then you have to create the default value in a .XML file for this property:
    这个方式不是像设置一个普通的默认值 例如给个NAME字段设置个 PO什么的 而且在 外键上设置一个默认值 而这个默认值是外键对应的表的一行的ID 的值

    [[i] 本帖最后由 leetaizhu 于 2010-3-12 13:29 编辑 [/i]]

    1 条回复 最后回复
    0
    • digitalsatoriD 离线
      digitalsatoriD 离线
      digitalsatori 管理员
      写于 最后由 编辑
      #2

      解释的非常的清晰,最后两个图说明了如何在Open ERP系统内设置默认的属性(Property)。其实我们也可以在XML文件中定义这个默认熟悉,比如你举的这个例子所对应的默认属性的XML文件是stock_data.xml:

      [code] <record forcecreate="True" id="property_stock_supplier" model="ir.property">
      <field name="name">property_stock_supplier</field>
      <field name="fields_id" search="[('model','=','res.partner'),('name','=','property_stock_supplier')]"/>
      <field eval="'stock.location,'+str(stock_location_suppliers)" name="value"/>
      </record>
      <record forcecreate="True" id="property_stock_customer" model="ir.property">
      <field name="name">property_stock_customer</field>
      <field name="fields_id" search="[('model','=','res.partner'),('name','=','property_stock_customer')]"/>
      <field eval="'stock.location,'+str(stock_location_customers)" name="value"/>
      </record>
      [/code]
      model=ir.property表示以下的记录内容是属于“ir.property“对象的一个资源(或者说是ir_property数据库表中的一条记录),它记录了两个字段内容:field_id 和 value。field_id中的内容根据search的条件结合你第一张图中的信息可以了解,其应该是‘Customer Location‘或 ‘Supplier Location', 在数据库中实际上记录的是这个字段在ir_model_fields表中对应的id值。
      而value中的内容是什么呢?

      我们首先要了解stock_location_customers 或 stock_location_suppliers在这里表示的是什么,其实这两个名称是指在当前XML文件中的record节点的id:
      [code] <record id="stock_location_suppliers" model="stock.location">
      <field name="name">Suppliers</field>
      <field name="location_id" ref="stock_location_locations_partner"/>
      <field name="usage">supplier</field>
      </record>
      <record id="stock_location_customers" model="stock.location">
      <field name="name">Customers</field>
      <field name="location_id" ref="stock_location_locations_partner"/>
      <field name="usage">customer</field>
      </record>
      [/code]
      也就是对应了stock_location数据库表中的一条记录。eval=... 表示将字符串作为Python表达式处理,处理的结果就是把两个字段连接起来。在数据库中stock_location_customers和stock_location_suppliers代表的是其在stock_location表中的id值,value值保存在数据库里就类似:'stock.location, 7' 这样,其结果就反映在你贴出的最后两张图中

      【上海先安科技】(tony AT openerp.cn)

      1 条回复 最后回复
      0
      • L 离线
        L 离线
        leetaizhu
        写于 最后由 编辑
        #3

        谢谢 digitalsatori 超级版主 的补充 这样基本就完善了 最后就差 何时应该用Fields.property 最佳实践了 希望大家一起努力

        1 条回复 最后回复
        0
        • JoshuaJ 离线
          JoshuaJ 离线
          Joshua 管理员
          写于 最后由 编辑
          #4

          这个字段以前我也看过,在这里转下官方的文档
          doc.openerp.com/developer/2_5_Objects_Fields_Methods/field_type.html?highlight=properties#property-fields

          [quote][size=99px]
          感觉就是many2one的特殊版。

          [[i] 本帖最后由 Joshua 于 2010-3-16 10:59 编辑 [/i]]

          【上海先安科技】(joshua AT openerp.cn),欢迎关注公众号:openerp_cn

          1 条回复 最后回复
          0
          • mrshellyM 离线
            mrshellyM 离线
            mrshelly
            写于 最后由 编辑
            #5

            那是不是就相当于是一个 key-->value 的一个存储位置?

            也就是说, 一些系统的配置参数也可以放在里面了?

            可以这样理解不?

            1 条回复 最后回复
            0

            • 登录

            • 没有帐号? 注册

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