Ir al contenido
Menú
Se marcó esta pregunta
1 Responder
1245 Vistas

Here is my situation:

I have a page inside notebook which is "Product Info". Inside this page, I have added two fields : product_id, product_image. So whenever I select a product, it will automatically show relevant image of that product. I have done this with this code:


from odoo import models, fields, api

class CrmLead(models.Model):

    _inherit = 'crm.lead'

    product_id = fields.Many2one('product.product', string="Product")

    product_image = fields.Binary(string='Custom Design',related='product_id.product_image', store=True)

class ProductImage(models.Model):

    _inherit = 'product.product'

    _description = 'Product Image'

    product_image = fields.Binary(string='Custom Design')


But now, I want to this product_id field as a one2many relation type with product.product alongside with product_image and attachment file field similar like order_line so that I can select as much product as I want . I have tried several ways but went in vein. So what I need to do to achieve that requirement? 


Avatar
Descartar
Mejor respuesta

You can simply create a one2many field relational to a new model, where those two fields are or relate it directly to the product.product model where the image field is also located, the only thing you need in the view is to use the tree attribute just like It is used in the sales lines to show those two fields with the one2many widget.

Avatar
Descartar
Autor

It works! Thank you. But now, its not showing my existing product but want me to create new one which I dont want. I want to select my existing product. If I need to create one, i will do it in product.product model as usual rule. Can you suggest me what I need to do?
here my code:
.py:
from odoo import models, fields, api
class CrmLead(models.Model):
_inherit = 'crm.lead'
product_ids = fields.One2many('product.product', 'crm_lead_id', string='Products')
class ProductProduct(models.Model):
_inherit = 'product.product'
crm_lead_id = fields.Many2one('crm.lead', string='CRM Lead')
product_image = fields.Binary(string='Product Image')

.xml:
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="wise_crm_lead_view_form_inherit" model="ir.ui.view">
<field name="name">techtrioz.crm.lead.form.inherit</field>
<field name="model">crm.lead</field>
<field name="inherit_id" ref="crm.crm_lead_view_form"/>
<field name="arch" type="xml">
<xpath expr="//page[@name='internal_notes']" position='after'>
<page string="Product Info" name="product_info">
<tree position="inside">
<field name="product_ids" widget="one2many_list">
<tree>
<field name="default_code"/>
<field name="product_image"/>
</tree>
</field>
</tree>
</page>
</xpath>
</field>
</record>
</odoo>

In that case it is better that you use a many2many relationship to be able to select already existing products, in the view you can still use the one2many widget even if the field is many2many

Publicaciones relacionadas Respuestas Vistas Actividad
1
ene 24
1153
1
ene 24
1437
2
ene 24
1280
2
ago 25
1279
0
may 25
679