как получить выбранное значение из поля many2one в tryton

Мне нужно создать поле many2one или Selection с именем «Категория» и другое поле с именем «эшелон». Для одной категории мы связываем много эшелонов. Это похоже на пример выбора страны, и для этой страны мы заполняем другое поле связанными подразделениями. мой код:


categoryy=fields.Many2One("grh.category","Category")
ech = fields.Many2One("grh.echelon",'echelon', depends=[ 'categoryy'])

@fields.depends('ech', 'categoryy')
def on_change_categoryy(self):
    if (self.ech
            and self.ech.echeloncategory != self.categoryy):
        return {'ech': None}
    return {}

from trytond.model import ModelView,ModelSQL,fields

__all__ = ['echelon']


class echelon(ModelView,ModelSQL):
    '''echelon'''
    __name__ = "grh.echelon"
    echeloncategory=fields.Many2One("grh.category","echelonofcategory")
    echelon=fields.Char("Echelon")

from trytond.model import ModelView,ModelSQL,fields
from trytond.pool import Pool

__all__ = ['category']


class category(ModelView,ModelSQL):
    '''category'''
    __name__ = "grh.category"
    category=fields.Char("category")
    echelons=fields.One2Many("grh.echelon","echeloncategory","Category echelons")

я не знаю, почему в поле «эх» показаны все эшелоны

Помоги мне, пожалуйста


person gasroot    schedule 05.08.2014    source источник


Ответы (1)


Вы должны использовать предложение домена, чтобы ограничить доступные параметры в поле ech. Вы можете найти полный справочник доменов по адресу:

http://doc.tryton.org/3.2/trytond/doc/topics/domain.html?highlight=domain

Также вы должны использовать PYSON, чтобы получить текущее значение категории, поэтому вы получите что-то вроде:

from trytond.pyson import Eval
ech = fields.Many2One("grh.echelon",'echelon', 
    domain=[
        ('category', '=', Eval('category', -1)),
    depends=['categoryy'])

Вы можете найти введение о PYSON на:

http://doc.tryton.org/3.2/trytond/doc/topics/pyson.html

person pokoli    schedule 05.08.2014