【问题标题】:how to get execute sql statement for following case in odoo?如何在odoo中为以下情况获取执行sql语句?
【发布时间】:2015-07-09 05:23:06
【问题描述】:

我有 asset.asset 我已经添加了 place1 many2one 字段,我将通过此表单创建一些记录。

我的要求是,当我在 placecalendar.event 中选择任何位置时,我的下一个字段应该只获取与同一位置相关的那些记录

假设我在 asset.asset 上创建了类似

1) 姓名: A1, 地点:**karnataka/gulbarga/shahapur **asset_catg_id:**硬件 **area_id:**硬盘 **asset_modelid_add: qqqq(在其他类或模型中通过model_no+make预定义域过滤器) **folio_no:**qqqqshahapur(自动填充位置+assermodelid_add)

2) 姓名: B1, 地点:**karnataka/gulbarga/jewargi, **asset_catg_id:**软件 **area_id:**os **asset_modelid_add: zzzz(通过model_no+make在域过滤器的其他类或模型中预定义) **folio_no:**zzzzjewargi(通过组合 location+assermodelid_add 自动填充)

我希望在 calendar.event 继承类中,当我选择位置时,下一个字段应该只为该记录获取 asset_modelid_add,即在 many2many 字段中,例如 If A1 selected next field 应该只得到 karnataka/gulbarga/shahapur ,folio_num 为 qqqqshahapur

class asset_asset(osv.osv):
        _inherit = "asset.asset"
        #_name = "asset_asset"
        _rec_name= "folio_num"
        _columns = {
            'name': fields.char('Asset Name', size=64),
            'place1': fields.many2one('asset.parentlocation', 'Location'),
            'asset_catg_id' : fields.many2one('asset.catg', 'Asset Catg Selection',select=True, required=True),
                'area_id' : fields.many2one('asset.name', 'Asset Name Selection', domain="[('asset_catg_id', '=', asset_catg_id)]", select=True, required=True),
            'assetmodelid_add' : fields.many2one('agile.portfolio1','Asset Model Code',domain="[('area_id', '=', area_id)]",),
            'folio_num' : fields.char('Folio No',),
            'asse_line':fields.one2many('asset.line','emp_id','Name Plate'),
            'asse_line2':fields.one2many('asset.part','emp_id1','Parts'),
                   #'assed_modelid':fields.many2one('agile.portfolio1','Asset Model ID',select=True, required=True),
            'quantity': fields.char('Quantity',size=64),
            'uom': fields.char('Uinit of Measure',size=64),
            'model_no' : fields.char('Model', size=64),

            #'asset_id':fields.many2one('agile.portfolio','Asset ID'),

        }
class asset_parentlocation(osv.osv):
    _name="asset.parentlocation"
    _rec_name="location_name"
    _columns = {
        'location_name' : fields.char('Asset Location', required=True),
        'parent_location' : fields.many2one('asset.parentlocation','Parent Location'),
        'nameee':fields.many2one('ir.attachment','Attachments'),}

    def name_get(self, cr, uid, ids, context=None):
        if context is None:
            context = {}
        if not ids:
            return []
        reads = self.read(cr, uid, ids, ['location_name','parent_location'], context=context)
        res = []
        for record in reads:
            name = record['location_name']
            if record['parent_location']:
                name = record['parent_location'][1]+' / '+name
            res.append((record['id'], name))
        return res
**calendar_event.py**
    class calendar_event(osv.osv):
        _inherit = "calendar.event"
        _rec_name = 'number'

        _columns = {
                'number' : fields.char('Meeting ID',readonly=1),

                'place' : fields.many2one('asset.parentlocation','Substation Location',),

                'assetmodelid_add' : fields.many2many('agile.portfolio1','Asset Model Code',),
                'folio_num' : fields.many2many('asset.asset','asset_asset_rel','super_id','asset_asset_id','Folio Num',),
                'inspection_name' : fields.many2many('asset1.inspection','asset1_inspection_rel','super_id','asset1_inspection_id','Inspection Type'),
    }

请更新答案如何处理 sql 或 onchage 都可以接受

【问题讨论】:

    标签: python odoo


    【解决方案1】:

    让我们考虑一个简单的例子。假设我们有一个指向 Product 的 many2one 字段(名称:product_id)。我们现在要根据类型选择框(名称:类型)更改这个 many2one 字段上的内容。现在,如果我选择类型作为服务,则只有服务类型产品应该在产品字段中可见。

    为此,我们必须在类型选择框上定义 on change 函数。

    def onchange_type(self,cr,uid,ids, type,context=None):
        product_obj = self.pool.get('product.product')
        product_ids = product_obj.search(cr,uid, [('type','=',type)])
        return {'domain':{'product_id':[('id','in',product_ids)]}}
    

    在您的情况下,您将不得不复制上述情况。以上情况我在我的项目中使用过。

    谢谢,

    【讨论】:

    • 我会尝试,但如何为 many2many 字段列表选择字段将是 many2many 字段
    • 如何像超级单词一样使用
    • 嘿,你需要引用已经实现的类的类和函数。例如:- res_partner_obj.functionName()
    • 我对解决方案不满意,请重播我的答案
    • 确切地告诉我你的问题,你想在哪里使用超级词?
    猜你喜欢
    • 2011-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-24
    • 1970-01-01
    • 2016-11-05
    • 2019-11-13
    相关资源
    最近更新 更多