Skip to Content
Menu
This question has been flagged
1 Reply
1379 Views

i want write a script that when i select table name the related column name of the table is show in the drop down in odoo.. here is my code..

table_name = fields.Selection( [('res_partner', 'Contacts'), ('res_company', 'Companies')], string='Table Name', tracking=True, required=True)

column_name = fields.Selection([], string='Column Name')

@api.model
def get_column_names(self, table_name):

query = """
       SELECT column_name
       FROM information_schema.columns
       WHERE table_name = %s
   """
self.env.cr.execute(query, [table_name])
result = self.env.cr.fetchall()
return [(row[0], row[0]) for row in result]


@api.onchange('table_name')
def onchange_table_name(self):
if self.table_name:
    column_names = self.get_column_names(self.table_name)
    columnlist = [(name[0], name[1]) for name in column_names]
    self.column_name.selection = columnlist
    

i am getting following error..

self.column_name.selection = [] AttributeError: 'bool' object has no attribute 'selection'

how to solve this error..

Avatar
Discard
Best Answer

Hi,

You can try using Reference Field in Odoo, which helps you to show data from the records based on model selection.

Sample:

action = fields.Reference(selection=[('ir.actions.report', 'ir.actions.report'),
('ir.actions.act_window', 'ir.actions.act_window'),
('ir.actions.act_url', 'ir.actions.act_url'),
('ir.actions.server', 'ir.actions.server'),
('ir.actions.client', 'ir.actions.client')])


See: Working of reference field in Odoo


Thanks

Avatar
Discard
Related Posts Replies Views Activity
2
May 24
460
1
Jun 23
912
1
May 23
3632
3
Feb 23
3649
2
Mar 15
4647