что такое атрибут, для чего его можно использовать? и как добавить связанный атрибут. Я пытаюсь добавить связанное поле для общей суммы.связанные атрибуты, связанные поля в унаследованном виде odoo
ответ
Связанные поля
В таком случае мы должны принимать значение от любой другой таблицы, но у нас уже есть ссылка на эту таблицу в нашей модели, в этом случае мы можем использовать одну функциональность, что мы можем добавить несколько полей из справочной таблицы, только имея только один ссылочное поле в нашей модели.
Одно реляционное поле (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)
Примечание:
Значение является доступно в этом поле только после сохранения записи.
Когда вы обновляете значение в своем новом связанном поле, оно также будет обновляться в исходном поле , хотя всегда рекомендуется использовать для установки только в новом поле.
В контексте связанных Odoo средств на места, что его значение будет
- чтение из другой таблицы (таблицы, связанных) ->
store=False
- чтение из другой таблицы, но сохраняется в таблице, определенной на ->
store=True
Примеры (Odoo V8):
sale.order
currency_id: она сохраняется в product_priceliststock_quant
packaging_type_id: она сохраняется в product_packaging и stock_quant. Каждый раз, когда вы меняете значение на product_packinging, оно также будет обновляться на Stock_quant, а не наоборот.
** Связанное поле * используется, когда вы хотите вытащить значение из другой модели, которую вы можете использовать связанное поле в полях.
Вот вам пример.
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)
Надеюсь, это поможет!