i want remove repetition from my select box .my code is
def _sel_func(self, cr, uid,context=None):
cr.execute("select distinct on(caller) id,caller FROM calldata1 order by caller")
result = cr.fetchall()
lst = []
for r in result:
dct = {}
dct['id'] = r[o]
dct['name'] = r[1]
lst.append(dct)
res_ids = [(r['id'], r['name']) for r in lst]
return res_ids
_columns = {
'date_start': fields.date('Date Start', required=True),
'date_end': fields.date('Date End', required=True),
'caller_id':fields.many2one(
'calldata1',
'Caller',
selection=_sel_func,
)
}
but it shows all the data in select box and shows error " ValidateError
The value "7172" for the field "calldata_print_report_wiz.caller_id" is not in the selection "
when selecting this and clicking print. How to show only the data from query in select box .Any one please help?
Odoo is the world's easiest all-in-one management software.
It includes hundreds of business apps:
- CRM
- e-Commerce
- Accounting
- Inventory
- PoS
- Project management
- MRP
This question has been flagged
1
Reply
5508
Views
Hi,
Please try the "_sel_function" like this to return list containing distinct values:
def _sel_func(self, cr, uid,context=None):
cr.execute("select distinct on(caller) id,caller FROM calldata1 order by caller")
result = cr.fetchall()
lst = []
new_lst = []
for r in result:
dct = {}
dct['id'] = r[o]
dct['name'] = r[1]
lst.append(dct)
new_lst = {v['id']:v for v in lst}.values()
res_ids = [(r['id'], r['name']) for r in new_lst]
return res_ids
But you can use a functional field with type "many2one", right? Please tell me the details of what you exactly need to do?