Установка домена для поля many2one

Есть объект «Телефонный звонок».
Есть два поля-списка: «Партнёры» и «Телефонные номера».
«Партнёры» относятся к «Телефонные номера» как one2many (у одного Партнёра может быть n-ное количество Телефонных номеров).
Задача: необходимо, чтобы при выборе Партнёра из списка «Партнёры», в списке «Телефонные номера» отображались только телефонные номера, принадлежащие данному Партнёру. Понимаю, что это возможно выкрутить, но как именно — так и не понял.
P.S. Пока удалось сделать только обратное: при выборе Телефонного номера в списке «Телефонные номера» устанавливается домен для списка «Партнёры», код ниже:

from openerp.osv import fields, osv

class crm_phonecall(osv.osv):

    _inherit = "crm.phonecall"

    _columns = {
        'phonenumber': fields.many2one('phonenumber.phonenumber', 'Phone number', required=True, ondelete='cascade'),

    } 

# Update partner's domain. Leave the only partner that owns selected phonenumber

    def onchange_phonenumber(self, cr, uid, ids, ph_selected):
	if ph_selected > 0:
	    record=self.pool.get('phonenumber.phonenumber').browse(cr, uid, ph_selected, context=None)
	    return {'value': {'partner_id': None},'domain': {'partner_id': [('id','=',record.partner_id.id)]}}  
        return {'value': {'partner_id': None},'domain': {'partner_id':''}} 
 
crm_phonecall();

8 комментариев

avatar
Зачем это делать в исходниках если можно сделать во вьюшке
avatar
В смысле? Не совсем понял, о именно чём речь.
avatar
Можно задать домен для поля в xml, где в качестве значения можно использовать другое поле.

Т.е. на вскидку должно быть так
/>
/>
avatar

<field name="partner_id" />
<field name="phone" domain="[('partner_id', '=', partner_id)]"/>
avatar
«Мы не ищем лёгких путей»)) Спасибо, все работает (что логично))
P.S. Если бы OpenERP еще и не глючила — цены бы ей не было!)
avatar
что в ней такого глючного?
avatar
Вообще это тема для фидбека девелоперам, но раз зашла речь: глючная по-мелочи. Сегодня например отказались работать права на задачи (никак не реагирует на них), до того слетала база после апдейта из репов.
Благо что пока в песочнице ковыряюсь, ибо в продакшене такие вещи чреваты(
avatar
Пока такого не встречал. может что в 7ке сделали.

У нас на 6ке уже два года продакшен крутится с большими нагрузками, и пока полет нормальный.

Оставить комментарий