2016-08-11 4 views

ответ

0

Связанные поля

В таком случае мы должны принимать значение от любой другой таблицы, но у нас уже есть ссылка на эту таблицу в нашей модели, в этом случае мы можем использовать одну функциональность, что мы можем добавить несколько полей из справочной таблицы, только имея только один ссылочное поле в нашей модели.

Одно реляционное поле (Many2one) исходной модели обязательно для в модели назначения для создания реляционного поля.

Рассмотрим company_currency_id поля из res.currency модели есть в модели назначения, то вы можете получить текущий курс этой валюты в целевой модели.

Синтаксис: V7

_columns = { 
'current_rate': fields.related('company_currency_id','rate_silent', type='float', relation='res.currency',digits_compute=dp.get_precision('Account'), string='Current Rate', readonly=True), 
} 

Здесь

company_currency_id => поле в одной и той же модели, через которую новое поле будет относиться,

rate_silent => является полем которое вы собираетесь связывать с новым полем, означает поле из исходной модели,

отношение => is имя источника модели,

тип => является типом данных поля источника

Синтаксис: v8 и более новой версии

current_rate = fields.Float(string='Current Rate', related='company_currency_id.rate_silent', store=True, readonly=True) 

Примечание:

Значение является доступно в этом поле только после сохранения записи.

Когда вы обновляете значение в своем новом связанном поле, оно также будет обновляться в исходном поле , хотя всегда рекомендуется использовать для установки только в новом поле.

0

В контексте связанных Odoo средств на места, что его значение будет

  1. чтение из другой таблицы (таблицы, связанных) ->store=False
  2. чтение из другой таблицы, но сохраняется в таблице, определенной на ->store=True

Примеры (Odoo V8):

  1. sale.order currency_id: она сохраняется в product_pricelist
  2. stock_quant packaging_type_id: она сохраняется в product_packaging и stock_quant. Каждый раз, когда вы меняете значение на product_packinging, оно также будет обновляться на Stock_quant, а не наоборот.
0

** Связанное поле * используется, когда вы хотите вытащить значение из другой модели, которую вы можете использовать связанное поле в полях.

Вот вам пример.

order_id = fields.Many2one(comodel_name='sale.order', 'Sale Order') 
order_amount = fields.Monetary(string='Order Amount', 
           store=True, 
           related='order_id.amount_total') 

Вы должны добавить поле Many2one в модель, которое относится к модели, к которой вы хотите получить доступ к полю. в нашем случае модель продажа.порядок работы.

с kwarg Вы можете связать поле родственной модели, определенную в поле Many2one. в нашем случае order_id.

Установка магазин kwarg автоматически сохранит это значение в базе данных. С новым API значение соответствующего поля будет автоматически обновляться. (Reference)

Надеюсь, это поможет!

 Смежные вопросы

  • Нет связанных вопросов^_^