Skip to Content
Menu
This question has been flagged
4 Replies
21223 Zobrazenia

How do I add "Search mode..." option to any many2one field? By selecting this option tree view opens up where I select one record.

I found similar example in Messaging model: 1. I select "Join a group" in "My Groups" category, 2. click "Create", 3. click the expand option for "Authorized Group" many2one list 4. There are listed "Create and Edit" and "Search More..." options. When I click "Search More" it opens up a search tree.

Please, how do I implement the same thing?

Avatar
Zrušiť
Best Answer

You have to create a many2one field like:

_columns = {
    'group_public_id': fields.many2one('res.groups', string='Authorized Group'),
}

Here res.groups is a relational table name.

And add this field to the form view in xml file and you can view the Search More.. option.

Ex:

<field name="group_public_id"/>

I have created a demo for you which may help you. Search More is displayed when there are at least 7 records in my.test1.

class my_test1(osv.osv): _name = 'my.test1' _columns = { 'name': fields.char('Test') }

class my_test(osv.osv): _name = 'my.test' _columns = { 'name': fields.char('Test'), 'test_id': fields.many2one('my.test1', string='Test Data'), }

Add following in xml file :

<record id="view_my_test_form" model="ir.ui.view"> <field name="name">my.test.form</field> <field name="model">my.test</field> <field name="arch" type="xml"> <form string="Product Form"> <field name="name"/> <field name="test_id"/> </form> </field> </record>

Avatar
Zrušiť
Autor

Thank you for your answer! :) I want to use my own many2one object than 'res.groups'.

e.g. class my_test(osv.osv): _name = 'my.test' _columns = {'name': fields.char('Test')} my_test()

Then how can I add "Search More" to this object? Thanks!

Have you added search view for that model?

Autor

No. Failed several times adding it before. What are the minimum requirements for search view?

You have to create XML record same as VIEW for SEARH VIEW and assign that ID in "search_view_id" attribute in ACTION.

Autor

You, sirs, are my heroes! I did not pay attention to this: "Search More is displayed when there are at least 7 records..."! Funnily enough, I spent 7 hours on this problem and all I had to do was add few more records! :)

Best Answer

I spent 7 hours on this problem and all I had to do was add few more records! <-- This is Answer. Thank you! you saved my 7 hours :))

Avatar
Zrušiť
Best Answer

Hello all,

Is it possible to open "search more" before 7 record. If yes, then from where?

Thanks in advance.

Avatar
Zrušiť

In Odoo 15 I have to override _search methdo from js backend.

This way worked for me:

Create a fields.js file with:

/* Override Search More ... option in Many2one fields */
odoo.define('my_module.Fields', function (require) {
"use strict";

var relational_fields = require('web.relational_fields');
var FieldMany2One = relational_fields.FieldMany2One;

FieldMany2One.include({
_search: async function (searchValue = "") {
const value = searchValue.trim();
const domain = this.record.getDomain(this.recordParams);
const context = Object.assign(
this.record.getContext(this.recordParams),
this.additionalContext
);
var values = await this._super.apply(this, arguments);

// Add "Search more..." option even if results count is lower than the limit of 7
if (this.limit >= values.length) {
values = this._manageSearchMore(values, value, domain, context);
}

return values;
},
})
});

Then add this line to __manifest__.py

'assets': {
'web.assets_backend': [
'my_module/static/src/js/fields.js',
],
},

Best Answer

Hello ,

I want to do something like, if user click on the many2one column at that time a selection with several records will be displayed under the field and than after one more option will be there "Search More...". If user click on search more button than a search more wizard will be open with all records.

But i want to do something like when user click on that field at that time direct the search more wizard will be open with all the records of that model(instead of a selection of few records and search more option)

I am using the odoo 16 version.

Avatar
Zrušiť
Related Posts Replies Zobrazenia Aktivita
0
mar 15
5699
2
mar 15
5329
1
jún 22
17006
2
mar 15
30881
1
máj 18
8491