Домен не работает должным образом в поиске - PullRequest
0 голосов
/ 25 октября 2011

В Opportunity у меня есть 2 категории пользователей: горизонтальный и вертикальный. Когда вертикальный пользователь входит в систему, его / ее имя появляется в вертикальном поле, но когда горизонтальный пользователь входит в систему, его имя также появляется в вертикальном пользовательском поле вместо горизонтальное поле пользователя. Я применил домен в окне поиска, как показано ниже -

для горизонтального пользователя:

<field name="user_id" string ="Salesman Horizontal" domain = "
    [('tri_salesteam.s_horizontal','=',True),'|','|','|','|','|','|','|','|',
    ('parent_id.parent_id.parent_id.parent_id.parent_id','=',uid),
    ('parent_id.parent_id.parent_id.parent_id.parent_id.parent_id','=',uid),
    ('parent_id.parent_id.parent_id.parent_id.parent_id.parent_id.parent_id','=',uid),
    ('parent_id.parent_id.parent_id.parent_id.parent_id.parent_id.parent_id.parent_id','=',uid),
    ('parent_id','=',uid),('parent_id.parent_id.parent_id.parent_id','=',uid),
    ('parent_id.parent_id.parent_id','=',uid),('parent_id.parent_id','=',uid),
    ('id','in',[uid])]" invisible="1">

для вертикального пользователя:

<field name="sales_vertical" domain = "
    [('tri_salesteam.s_horizontal','!=',True),'|','|','|','|','|','|','|','|',
    ('parent_id.parent_id.parent_id.parent_id.parent_id','=',uid),
    ('parent_id.parent_id.parent_id.parent_id.parent_id.parent_id','=',uid),
    ('parent_id.parent_id.parent_id.parent_id.parent_id.parent_id.parent_id','=',uid),
    ('parent_id.parent_id.parent_id.parent_id.parent_id.parent_id.parent_id.parent_id','=',uid),
    ('parent_id','=',uid),('parent_id.parent_id','=',uid),
    ('parent_id.parent_id.parent_id.parent_id','=',uid),
    ('parent_id.parent_id.parent_id','=',uid),('id','in',[uid])]" invisible="1">

Ответы [ 2 ]

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

Попробуйте использовать 'parent_of' и 'child_of' в домене вместо того, чтобы использовать это много '|'условия для поиска parent_id.

0 голосов
/ 31 октября 2011

Я не совсем уверен, что вы спрашиваете, но вот подсказка для отладки условий поиска. Поместите точку останова или оператор отладки в метод orm._search() кода сервера. В версии 6.0.3 он находится на линии 4029 server/bin/osv/orm.py и выглядит следующим образом:

    cr.execute('SELECT "%s".id FROM ' % self._table + from_clause + where_str + order_by + limit_str + offset_str, where_clause_params)

Если вы сбросите содержимое where_str, тогда вы сможете увидеть, как интерпретируются ваши ограничения.

...