通过继承的方法在product里面加图片
-
[size=99px]最近发现群上有朋友在问如何在product上面添加图片这个问题,我以前也搞过,初学者也有初学者的办法,这里我介绍一下我是如何实现的,因为觉得直接修改addon里面的module有些危险,不建议。所以通过自己写个继承模块来实现。 [/size]
[size=99px][color=#000000]1.首先是包的构成:[/color][/size]
[attach]509[/attach]
[size=99px][color=red]init.py
[/color][/size][color=#000000]import product_img
[/color]
[color=#000000]这里是初始化的时候需要模块里面的那些py文件,我这里是product_img.py。所以写import product_img[/color][size=99px][color=red]terp.py[/color][/size]
[color=#000000][code]{
"name" : "simple_product_image",
"version" : "1.0",
"depends" : ["product"],
"init_xml" : [],
"update_xml" : ["product_img_view.xml"],
"installable" : True,
"active" : False,
"author" : "Joshua",
}[/code][/color]
[color=#000000]这里的最重要的有[/color]
[color=#000000]“depends”:就是需要依赖哪些module,我这里既然是继承product当然就是product了。[/color]
“update_xml”:就是这个模块需要的Xml。我写了个是product_img_view.xml[size=99px][color=red]product_img.py[/color][/size][code]
#!/usr/bin/pythonfrom osv import osv, fields
class product_product(osv.osv):
_name = 'product.product'
_inherit = 'product.product'
_description = 'Product'
_columns = {
'pic':fields.binary('Pic'),
}product_product()[/code]这里是object的继承
_name='product.product'._inherit = 'product.product'(此名字可以在Administrators->Customization->Database Structure->Object查找,不过我建议还是直接进addon里面看product模块)
_columns就是字段了, 'pic':fields.binary('Pic'), 'pic'是字段名,就是数据库里面存的字段,:fields.binary就是图片在OE里面的字段类型,后面的'Pic'是在OE里面显示的名称。[size=99px][color=red]product_img_view.xml[/color][/size][code]
<openerp>
<data>
<record id="product_img_view" model="ir.ui.view">
<field name="name">product.normal.form</field>
<field name="model">product.product</field>
<field name="type">form</field>
<field name="inherit_id" ref="product.product_normal_form_view"/>
<field name="arch" type="xml">
<field name="name" position="before">
<field name="pic" widget="image" nolabel="1" img_width="300" img_height="300"/>
</field>
</field>
</record>
</data>
</openerp>
[/code]这里的格式其实都已经很固定的了。这里是view的继承
“id”代表的是这个view,唯一。
“name”就是你要继承的view的名字
“model”就是你要继承的view的object...
“ref”就是你要继承的view的id
<field name="name" position="before">这句是是你的元件插入的时用于定位的我这里的意思是插在name之前
<field name="pic" widget="image" nolabel="1" img_width="300" img_height="300"/>这句就是你所要插入的东西了,我这里是插入一个图片300*300大小的图片。
[size=99px][color=red]效果图:[/color][/size]
[attach]510[/attach][size=99px][attach]511[/attach][/size]
[[i] 本帖最后由 Joshua 于 2010-4-3 23:33 编辑 [/i]]