Можно ли добавить новое поле на основе View в Postgresql в Odoo без использования файла класса модели Odoo. ?Добавить новое динамическое поле в Odoo
ответ
Вы можете получить модель, получающую данные из вида. На самом деле это широко используется в отчетах.
Но список полей, доступных в модели, должен быть определен в модели.
Есть ли способ создать вышеупомянутую модель динамически? – Naitik
для создания динамических представлений в odoo, то лучше обратитесь этот link
Вот решение
указать _auto параметра = False на объект OpenERP, поэтому таблица не соответствующий Словарь _columns создается автоматически.
Добавьте метод init (self, cr), который создает представление PostgreSQL, соответствующее полям, объявленным в _columns.
код Python:
class xyz(osv.osv):
_name = "xyz"
_description = "xxx"
_auto = False
_columns = {
'unique_id': fields.char('Employee ID', size=12),
'employee_id': fields.many2one('table3', "Name"),
}
def init(self, cr):
openerp.tools.drop_view_if_exists(cr, 'table_preview')
cr.execute("""
create or replace view payslip_preview as (
SELECT * FROM crosstab('SELECT ps.id as id, emp.unique_id as unique_id, emp.id as employee_i
FROM table1 psl
JOIN table2 ps ON (ps.id = psl.slip_id)
JOIN table3 emp ON (emp.id = ps.employee_id)
WHERE ps.state IN (''draft'') ORDER BY 1',
'SELECT id FROM table4 ORDER BY sequence') AS
(
"id" int,
"unique_id" varchar(10),
"employee_id" int,
)
)
""")
Почему вы хотите сделать это? Не могли бы вы объяснить это лучше? – ChesuCR