2014-08-05 5 views
0

Я должен создать many2one или выбора поля называется Категория и другое поле под названием эшелон. Для одной категории мы связываем много эшелонов. Это, например, пример выбора страны и для этой страны, мы заполняем другую область связанными подразделениями. мой код:как можно получить выбранное значение из many2one поля в Tryton


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") 

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

помочь мне пожалуйста

ответ

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

+0

спасибо это работает – gasroot

Смежные вопросы