Siirry sisältöön
Menu
Sinun on rekisteröidyttävä, jotta voit olla vuorovaikutuksessa yhteisön kanssa.
Tämä kysymys on merkitty
3 Vastaukset
13139 Näkymät

Good night! 

In the "Contacts" module, when we select the Country field, states are automatically filtered according to the selected country. I want to use this same feature in another situation but I can't understand how this feature was created. Everything seems to have to do with the context, but I've tried it and it didn't work, the auto filter doesn't happen. Can you help me with this conceptual doubt? 

Note: I don't really want to do anything with the Country and State fields, but if I understand how this filter occurs, I can apply it to my model, with me it would be something like selecting a car manufacturer and filtering the models in the next field. 


Thanks!


Avatar
Hylkää
Paras vastaus

The way it works in the country/state example is by using an onchange function that returns a domain:

@api.onchange('country_id')
def _onchange_country_id_wrapper(self):
    res = {'domain': {'state_id': []}}
    if self.country_id:
        res['domain']['state_id'] = [('country_id', '=', self.country_id.id)]
    return res

The benefit of the onchange approach is that it allows you to select a state without a country. But it also means if you select a country, save the record, edit again and select state, it will no longer be filtered to the correct country.

If you'd prefer that the country must be selected, you can add a domain on the state field in xml like so:

 <field name="state_id" domain=[('country_id', '=', country_id)]"/>
Avatar
Hylkää
Paras vastaus

Context should work, or you can use domain, which may be a little simpler:

<field name="product_id"
    domain="[('sale_ok','=',True),('x_studio_customer','=',parent.partner_id)]" /> 

This might help: https://www.odoo.com/documentation/11.0/reference/orm.html#domains

Avatar
Hylkää
Tekijä Paras vastaus

Thank you so much guys!

It worked very well with me!

Thankful !!!

Avatar
Hylkää