Что такое использование связанных полей в OpenERP? - PullRequest
8 голосов
/ 08 октября 2010

Может кто-нибудь объяснить мне что-то о смежных областях. Например -

  • Как это было использовано
  • Как это можно помочь
  • Для какого сценария я должен использовать fields.related

Если кто-нибудь может привести небольшой пример для реального использования полей. Я был бы признателен за это.

Ответы [ 4 ]

9 голосов
/ 08 октября 2010

Позволяет вытащить поле из связанной таблицы.Вы можете найти более подробную информацию в книге разработчиков , и один из примеров, который стоит посмотреть, это поле order_partner_id класса sale_order_line.В версии 5.14 это строка 806 addons/sale/sale.py.

. Я часто обнаруживаю, что хочу отобразить поле в списке, но оно находится в родительской записи, а не в реальной таблице, которую я перечисляю.

8 голосов
/ 29 ноября 2011

При использовании связанного поля вы должны сначала выбрать, какое поле будет связано.Например, я создаю новый модуль для добавления информации об ученике.Здесь студент на самом деле является партнером.Итак, _rec_name='partner_id' занято. В res.partner вы, возможно, видели поле ref.Значение в поле ref берется как internal_number для модуля студента.

Итак, что мы делаем здесь:

class student(osv.osv):
    _name='student'
    _rec_name='partner_id'
    _columns ={
           'partner_id':fields.many2one('res.partner','Name'),
           'internal_number':fields.related(
                   'partner_id',
                   'ref',
                   type='char',
                   size=16,
                   string='Internal Number',
                   ),
           }

Если поле, которое мы хотим показать как связанноеПоле является полем выбора, затем вы должны предоставить type='selection' и selection=[(case1,case1),(case2,case2),...], список кортежей.Если это поле много2, то type='many2one' и relation='model_name'.

1 голос
/ 19 апреля 2012

связанные поля приводят элемент управления к другой таблице, родительская таблица будет иметь однозначное отношение с дочерней таблицей, а дочерняя таблица будет иметь многозначное отношение к родительской таблице. например: account.invoice to account.invoice.line со следующим полем

'invoice_line': fields.one2many ('account.invoice.line', 'invoice_id', 'Invoice Lines', readonly = True, states = {'draft': [('readonly', False)]})

и account.invoice.line относится к account.invoice со следующим кодом в обратном порядке.

'invoice_id': fields.many2one ('account.invoice', 'Reference Invoice', ondelete = 'cascade', select = True),

1 голос
/ 10 мая 2011

Пример можно найти в документации разработчика OpenERP, в нормализации базы данных он называется Переходная зависимость .

...