2017-10-23 9 views
0

私はプロダクトテンプレートフォームのウィザードを持っています。私は1つの製品のウィザードで複数のイメージを保存したいと思います。ウィザードで、[OK]ボタンをクリックすると、選択した画像が消えます。ここに私のコードは次のとおりです。 -odoo10のウィザードでイメージを保存できません

image.pyコード: -

from openerp import api, fields, models, _ 
from openerp import SUPERUSER_ID 
from openerp.exceptions import UserError 
import openerp.addons.decimal_precision as dp 

class image_wizard(models.TransientModel): 
    _name = "image.wizard" 

    image_med = fields.Many2many('ir.attachment', string="Attachments") 
    image = fields.Binary("Image") 





    @api.multi 
    def action_image_add(self, context=None): 
      rec = self._context.get('active_ids', []) 
      if rec: 
       line_values = {'image_medium':self.image_med 
         } 
       product = self.create['product.template'].write(line_values) 

image.xmlコード: -

<?xml version="1.0" encoding="utf-8"?> 
<openerp> 
    <data> 
     <record id="view_image_wizard" model="ir.ui.view"> 
      <field name="name">Image wizard</field> 
      <field name="model">image.wizard</field> 
      <field name="arch" type="xml"> 
       <form string="Sales Pack"> 
        <group colspan="4" col="4"> 
         <group colspan="4" col="4"> 
          <field name="image_med" widget="many2many_binary" class="thumbimage"/> 
          <field name="image" invisible="1"/> 

         </group> 
        </group> 
        <footer> 
         <button name="action_image_add" string="Ok" type="object" 
           class="btn-primary"/> 
         <button string="Cancel" class="btn-default" special="cancel"/> 
        </footer> 
       </form> 
      </field> 
     </record> 

     <record id="action_view_image_wizard" model="ir.actions.act_window"> 
      <field name="name">Image wizard</field> 
      <field name="type">ir.actions.act_window</field> 
      <field name="res_model">image.wizard</field> 
      <field name="view_type">form</field> 
      <field name="view_mode">form</field> 
      <field name="view_id" ref="view_image_wizard"/> 
      <field name="target">new</field> 
     </record> 

    </data> 
</openerp> 

product.pyコード: -

from openerp import api, fields, models, _ 
from openerp import SUPERUSER_ID 
from openerp.exceptions import UserError 
import openerp.addons.decimal_precision as dp 

class ProductImage(models.Model): 
    _inherit ="product.template" 

のProduct.xmlコード: -

<?xml version="1.0" encoding="utf-8"?> 
<openerp> 
    <data> 

     <record id="product_image_form" model="ir.ui.view"> 
      <field name="name">product.image.form</field> 
      <field name="model">product.template</field> 
      <field name="inherit_id" ref="product.product_template_form_view"/> 
      <field name="arch" type="xml"> 

       <xpath expr="//field[@name='image_medium']" position="before"> 
        <button name="%(action_view_image_wizard)d" string="see all images" type="action"/> 
       </xpath> 
      </field> 
     </record> 
    </data> 
</openerp> 

それでは、どのようにウィザードで複数の画像を保存し、これらの画像は、我々は[OK]ボタンをクリックすると消えますよう、ウィザードで保存された画像を参照してください。私のコードにエラーはありますか?誰もお勧めできますか?

答えて

1

ウィザードレコードは永続的ではありません。特定の時間が経過すると自動的にデータベースから削除されます。これがトランジエントと呼ばれる理由です。 :doc odoo

+0

は、ウィザードで画像を保存/表示する任意の代替はありますか? –

+0

コンテキストを使用することができます –

+0

私はこの技術に慣れていません。上記の条件とコードでコンテキストを使用する方法を提案できますか? –

0

あなたはボタンを追加する必要があります。この後

<button string="Open wizard" 
     name="%(my_module.action_open_wizard)d" 
     type="action" 
     class="btn-link" 
     context="{'image_med': image_med}"/> 

我々はウィザードのデフォルト値を設定する必要があります。

<record id="action_open_wizard" model="ir.actions.act_window"> 
    <field name="name">action name</field> 
    <field name="res_model">my_model_two</field> 
    <field name="view_id" ref="model_two_form_wizard"/> 
    <field name="context">{'default_image_med': context.get('image_med', False),}</field> 
    <field name="target">new</field> 
</record 
関連する問題