在我的课程文件夹中,有很多商品和许多金额。我需要在我的字段good_id上使用域过滤器,在该字段上我需要显示我的对象文件夹的商品列表。
所以我在我的金额类(_get_folder_list_goods)上创建了一个函数,它返回文件夹的商品列表,并在我的字段good_id中添加了一个域属性。
这是我的课程:
class folder(osv.osv):
_name = 'folder'
_columns = {
'name' : fields.char(u'Numéro',size=50, readonly=True),
'goods_ids': fields.many2many('good', 'doss_bien_rel', 'folder_id', 'good_id', 'Goods'),
'amount_id': fields.one2many('amount', 'folder_id', 'Amounts'),
...}
class good(osv.osv):
_name = 'good'
_columns = {
'name' : fields.function(_name_get_fnc, type="char", string=u''),
...}
class amount(osv.osv):
_name = 'amount'
def _get_folder_list_biens(self, cr, uid,folder_id, context={}):
liste_goods=[]
object_folder = self.pool.get('folder').browse(cr,uid,folder_id,context)
if object_folder.goods_ids:
for good in object_folder.goods_ids:
liste_goods.append(good.id)
return liste_goods
_columns = {
'folder_id': fields.many2one('folder', 'Ref folder', select=True),
'good_id':fields.many2one('good', Goos',domain="[('id', 'in', _get_folder_list_biens(folder_id))]"),
}
我收到了这个错误:
未捕获错误:NameError:未定义名称'_get_folder_list_biens'
答案 0 :(得分:1)
当用户开始键入(或查找)和Good时,在客户端上使用域,而它(客户端)对此方法一无所知。你需要做的是创建一个类型为many2one的函数字段,它调用_get_folder_list_biens并返回一个id列表。将新功能字段放在您的表单上是不可见的,然后创建您的域名(' id',' in',my_functional_field)