返回具有所有记录的视图

时间:2018-12-05 15:44:00

标签: odoo odoo-8 odoo-9

因此,我制作了一个菜单,该菜单正在调用一种方法,该方法产生一些逻辑并在product.assortment.remove中创建记录,并且在创建所有记录后,它返回一个视图。但是我的问题是我得到的视图有0条记录。

我的目标是我的方法应返回创建了所有记录的视图,并且用户可以删除一些记录(如普通树状视图中带有垃圾桶图标),我该如何做到这一点?

P.S。

实际上我将视图更改为树,将<field name="model">assortment.product.removal.wiz</field>更改为product.assortment.remove,并返回了包含所有记录的树视图,但是该视图没有垃圾箱图标,因此用户无法删除记录

class AssortmentProductRemoval(models.TransientModel):
    _name = 'assortment.product.removal.wiz'
    _description = "Wizard for removing assortment product"

    prod_assort_rem_ids = fields.One2many(
        'product.assortment.remove', 'product_id',
        string='Product Assortmen Remove',)

@api.multi
def _check_assortment_items(self):
     <-- some logic here -->
     assort_rem_obj = self.env['product.assortment.remove']
     vals = ({'qty_sold': qty,
              'product_id': product.id,
              'profit': profit})
        assort_rem_obj.create(vals)
    view = self.env.ref('config_hetlita.assortment_product_removal')
    return {
        'type': 'ir.actions.act_window',
        'view_type': 'form',
        'view_mode': 'form',
        'res_model': 'assortment.product.removal.wiz',
        'views': [(view.id, 'form'), (False, 'tree')],
        'res_id': self.id,
        'target': 'new'
    }

class ProductAssortmentRemove(models.Model):
    _name = 'product.assortment.remove'

    product_id = fields.Many2one(
        'product.template', string='Product',
        domain=[],
        required=False)
    turnover = fields.Float(string='Turnover', required=False)
    profit = fields.Float(string='Profit', required=False)
    qty_sold = fields.Float(string='Quantity sold', required=False)
<record model="ir.ui.view" id="assortment_product_removal">
            <field name="name">view.name</field>
            <field name="model">assortment.product.removal.wiz</field>
            <field name="arch" type="xml">
               <form string="Update Set">
                <field name="prod_assort_rem_ids" >
                    <tree editable="bottom">
                        <field name="product_id"/>
                        <field name="turnover"/>
                        <field name="qty_sold"/>
                    </tree>
                </field>
                <footer>
                    <button string="Cancel" icon="gtk-cancel" special="cancel" />
                    or
                    <button name="action_save_sol" string="Save" type="object" icon="gtk-ok"/>
                </footer>
            </form>
            </field>
        </record>


        <record id="action_test2" model="ir.actions.server">
            <field name="name">Assortment product removal</field>
            <field name="model_id" ref="model_assortment_product_removal_wiz"/>
            <field name="state">code</field>
              <field name="code">action = self._check_assortment_items(cr, uid, context.get('active_ids'), context=context)</field>
        </record>

        <menuitem id="your_menu_id12" action="action_test2" parent="base.menu_sale_config"  name="Assort remove"  sequence="1"/>

1 个答案:

答案 0 :(得分:1)

确保您的用户具有删除访问权限,并且您可以像这样在树上强制使用删除图标

     <tree delete="1" >

由于您正在显示自己在向导中记录的内容,因此只能在表单视图中显示它们

      # remove views key and use view_id
      'view_id': view.id

我认为您缺少删除图标,因为odoo在视图模式下而不是在编辑模式下显示记录,因为您使用视图而不是view_id。或者您的用户没有对模型的删除访问权限。