#python #odoo #odoo-13
#python #odoo #odoo-13
Вопрос:
Я хочу отобразить пользовательское поле в поле many2one в odoo, но только в определенном представлении, представлении заказа на продажу. Это мои модели
class SalesPartnerBankInherit(models.Model):
_inherit = 'res.partner.bank'
display_on_sales = fields.Boolean(string='Display On Sales Quotation '
'Report', readonly=False)
location = fields.Char()
Я хочу отобразить поле местоположения в моем поле many2one в заказе на продажу.
class CustomSalesInherit(models.Model):
_inherit = 'sale.order'
quotation = fields.Text(string='Quotation Title', readonly=False,
compute='_compute_quotation_title',
location = fields.Many2one('res.partner.bank', domain=[('location', '!=', None)],
string='Bank Account Location')
Комментарии:
1. Вы можете сделать это с помощью вычисляемых или связанных полей. Но сначала я пропускаю требование здесь: где или когда будет установлена запись «res.partner.bank»? Или откуда вы берете данные? Теперь ваше решение позволит пользователю устанавливать банковский счет для заказов на продажу, которые предварительно фильтруются (показывать только банковские счета с установленным полем местоположения). Что такое банковский счет в контексте вашего процесса, банковский счет клиента или вашей компании?
2. Я вас не понимаю
Ответ №1:
Я действительно не вижу, где в вашем случае реальная связь между банковскими счетами и заказами на продажу, но второе поле должно работать. Но сначала вы должны переименовать поле Many2one в res.partner.bank
.
class CustomSalesInherit(models.Model):
_inherit = 'sale.order'
# i've added display_on_sales to the domain
# because the field names makes sense for using it here
partner_bank_id = fields.Many2one(
comodel_name='res.partner.bank',
domain=[('location', '!=', None), ('display_on_sales', '=', True)],
string='Bank Account Location')
# related field to location
location = fields.Char(related="partner_bank_id.location")