Каковы отношения между res.partner и res.user в odoo13? - PullRequest
1 голос
/ 22 октября 2019

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

is_customer = False/True    
self.env['res.partner'].search([('customer', '=', is_customer)])

Но теперь в odoo13 они удаляются заказчик поле. Я хочу предложение, как различать их, как указано выше? Есть поле сотрудник , которое не работает для меня.

Ответы [ 3 ]

1 голос
/ 22 октября 2019

res.user имеет поле many2one для res.partner, называемое partner_id. Вы можете извлечь всех партнеров, которые являются пользователями, подобными этому:

   # this will extract every partner that is related to user
   partner_users = self.env['res.users'].search([]).mapped('partner_id')  

Если вы хотите отфильтровать партнера с другим полем, напримерname:

 # first extract all ids to use them in the domain
 partner_users_ids = self.env['res.users'].search([]).mapped('partner_id').ids
 self.env['res.partner'].search([('id', 'in', partner_users_ids), ('name', 'ilike', some_value)])     
0 голосов
/ 22 октября 2019

Подробное объяснение и примеры можно найти в базе : Удалить поля клиент / поставщик в сообщении о принятии res.partner .

выдержка

Этот коммит позволяет вызвать name_search с контекстным ключом res_partner_search_mode, который в настоящее время может принимать два значения: «клиент» или «поставщик».

При заказе результатов поиска партнеры по заказупо количеству SO, которое они имеют, когда значением является «customer», и по количеству PO, если значением является «supplier».

Лучшие поставщики / клиенты отображаются выше в раскрывающемся списке партнеров PO / SO.

Мы подумали о различных реализациях, прежде чем выбрать эту

0 голосов
/ 22 октября 2019

Сравнение или использование поля customer, работающего для вас, является скорее совпадением, потому что у вас никогда не было партнеров в вашем Odoo без customer или supplier, не являющихся пользователями.

Но вы должны действительновместо этого используйте user_ids, для каждой версии вплоть до Odoo 8. Потому что это поле one2many, использующее поле res.users partner_id в качестве отношения, которое всегда должно работать.

...