Как я могу изменить выбор в поле выбора OpenERP на основе других значений поля? - PullRequest
4 голосов
/ 30 ноября 2011

У меня есть форма с четырьмя полями:

  • Урожай - выбор
  • Активно С - дата
  • Активно до - дата
  • Площадь блока - выбор

Как сделать так, чтобы доступные параметры в области блоков зависели от значений, выбранных пользователем для других полей?

Ответы [ 3 ]

3 голосов
/ 01 декабря 2011

Я не знаю, можете ли вы сделать это с полем выбора, но вы можете изменить домен поля «многие к одному», когда другое поле меняет значение.Вы также можете просто использовать другие поля в домене вашего поля BlockArea, и вам вообще не придется его менять.Посмотрите, как на экране адрес партнера устанавливается домен для поля state_id. может оказаться полезным *1003* этот связанный вопрос.

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

Я нашел ветку обсуждения , в которой говорится, что вы можете использовать виджет выбора в поле «многие к одному», так что это может работать для вас, еслиустановите domain для поля.Я сам не пробовал.

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

Попробуйте функцию on_change .. создайте функцию on_change и в конце функции верните условие домена для поля block_area например

def onchange_for_block_area(self,cr,uid,ids,crop,from_date,to_date,context):
    domain=[]
    #
    #some statements for finding the domain
    #
    return {'domain':{'block_area': domain}}

предоставляет функцию onchange для полей crop, from_date и to_date

1 голос
/ 01 февраля 2012

Чтобы ограничить доступные параметры на основе других значений поля, вы можете использовать domain.Например, это используется в стандартном модуле project_issue:

Цитирование соответствующих строк:

class project_issue(crm.crm_case, osv.osv):
    _columns = {
        'project_id':fields.many2one('project.project', 'Project'),
        'type_id': fields.many2one ('project.task.type', 'Stages', domain="[('project_ids', '=', project_id)]"),
    }

В этом примере type_id доступные опции выбираются из project.task.typeтаблица, в зависимости от значения поля project_id.

...