我必须创建一个名为Category的many2one或Selection字段以及另一个名为echelon的字段。对于一个类别,我们将许多梯队联系起来。这就像选择国家和国家的例子一样,我们通过相关的细分来填补另一个领域。我的代码:
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")
我不知道为什么'ech'字段显示所有梯队
请帮助我答案 0 :(得分:1)
您应该使用domain子句来限制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的介绍: