2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Many2many-kentät ovat samanlaisia kuin Many2one-kentät, koska ne muodostavat uusia suhteita mallien välille.olla olemassaOdoo 16 , et voi ryhmitellä many2many-kenttien mukaan, koska mikä tahansa tietue voidaan valita käyttämällä many2many-tietueita. Kun annat ryhmän suodattimella many2many-kentällä, saat väitevirheen.
Esittelyssä Many2Many-kenttäryhmän käyttäminen Odoo 16:ssa。
Käytän tässä olemassa olevaa tag_ids many2many -kenttää. Kuten seuraavasta koodista näkyy:
.py
tag_ids = fields.Many2many('crm.tag', 'sale_order_tag_rel', 'order_id', 'tag_id', string='Tags')
.xml
- <record id="view_sales_order_filter" model="ir.ui.view">
- <field name="name">sale.order.view.list.inherit.module.name</field>
- <field name="model">sale.order</field>
- <field name="inherit_id" ref="sale.view_sales_order_filter"/>
- <field name="arch" type="xml">
- <xpath expr="//search/group/filter[@name='customer']" position="after">
- <separator/>
- <filter name="tag_ids" string="Tags" domain="[]" context="{'group_by': 'tag_ids'}"/>
- <separator/>
- </xpath>
- </field>
- </record>
Voit käyttää Many2many-kenttää group_by-suodatukseen. Tämä toimii, jos laskemme kentät, mutta jos many2many-kentän arvo on 2, se näytetään pilkulla (,) kuten tag1, tag2 jne., koska se on merkkikenttä.
.py
- product_tags = fields.Char(string='Tags', compute='_get_tags', store=True)
- @api.model
- @api.depends('tag_ids')
- def _get_tags(self):
- for rec in self:
- if rec.tag_ids:
- product_tags = ','.join([p.name for p in rec.tag_ids])
- else:
- product_tags = ''
- rec.product_tags = product_tags
.xml
- <record id="view_sales_order_filter" model="ir.ui.view">
- <field name="name">sale.order.view.list.inherit.module.name</field>
- <field name="model">sale.order</field>
- <field name="inherit_id" ref="sale.view_sales_order_filter"/>
- <field name="arch" type="xml">
- <xpath expr="//search/group/filter[@name='customer']"
- position="after">
- <separator/>
- <filter name="tag_ids" string="Tags" domain="[]"
- context="{'group_by': 'product_tags'}"/>
- <separator/>
- </xpath>
- </field>
- </record>
- <record id="sale_view_form_custom" model="ir.ui.view">
- <field name="name">ale.order.view.form.inherit.module.name</field>
- <field name="model">sale.order</field>
- <field name="inherit_id" ref="sale.view_order_form"/>
- <field name="arch" type="xml">
- <xpath expr="//field[@name='payment_term_id']" position="after">
- <field name="product_tags"/>
- </xpath>
- </field>
- </record>
Olemme lisänneet tähän Char-kentän product_tags. Se on laskettu kenttä, johon tarran nimi ketjutetaan.
Voit nähdä, että olemme toimittaneet XML-tiedostoon ryhmittelysuodattimen nimeltä tag. Kun yritämme ryhmitellä näiden myyntitilausten mukaan, se näkyy alla.
Samoin voimme lisätä groupby:n many2many-kenttiin.
Seuraavaksi tarkistetaan, kuinka suodatin lisätään many2many-kenttään.
Voit luoda vaihtoehtoisen Many2Many-kentän laskeaksesi arvon many2many-kentästä. Annan esimerkin tämän osoittamiseksi. Tässä kentässä on määritettävä store=True.
.py
- newfield_id = fields.Many2one('example_ids', compute=_compute_newfield_id, store=True)
- @api.depends('example_ids')
- def _compute_newfield_id(self):
- for record in self:
- record.newfield_id = record.example_ids and record.example_ids[0] or False
.xml
<field name="newfield_id" string="Example" filter_domain="[(newfield_id,'ilike', self)]"/>
Voit antaa verkkotunnuksen tarvittaessa, koska se on helposti haettavissa tallennetuista kentistä. Voit halutessasi lisätä sijainnin xpath-osoitteen.
Lisätietoja useista moneen kenttien luomisesta asiakasportaalilomakkeissa Odoo 16:ssa