当前位置: 首页 > 面试题库 >

域过滤器在odoo中的many2one字段?

屠华辉
2023-03-14
问题内容

下面的代码是资产继承类。在这里我将为 ‘place’ 字段添加 Karn / Bang / Kengeri
‘karn / bang / malleshwaram’ 为’Karn / Bang /
Kengeri’将添加’asset_catg_id’与A和B.然后为’karn / bang / malleshwaram与Y和Z。

现在在卡兰德继承了阶级。如果我用 ‘Karn / Bang /* Kengeri’ 选择 ‘place’ ,那么下一个字段
‘asset_catg_id’ 我只需要得到 A和B 下拉列表。如果再次 “ karn / bang /
malleshwaram”,
那么我必须只获得 Y,Z 选项。并且先前选择的 “ asset_catg_id”
值应删除。我尝试使用域过滤器选项得到 键值错误
*

class asset_asset(osv.osv):
    _inherit = "asset.asset"
    #_name = "asset_asset"
    _rec_name= "folio_num"
    _columns = {
        'name': fields.char('Asset Name', size=64),
        'place': fields.many2one('asset.parentlocation', 'Location'),
        'asset_catg_id' : fields.many2one('asset.catg', 'Asset Catg Selection', select=True, required=True),}

class asset_catg(osv.Model): 
    _name="asset.catg" 
    _rec_name='name1'
    _description="Define Asset Catgs" 
    _columns={ 'name1':fields.char('Asset Catg Names',size=64,required=True),}
asset_catg()
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



**Following code is calendar inherited class**


class calendar_event(osv.osv):

    _inherit = "calendar.event"
    _rec_name = 'number'

    _columns = {
            'number' : fields.char('Meeting ID',readonly=1),
            #'place' : fields.many2one('stock.location','Substation Location',),

            'place' : fields.many2one('asset.parentlocation','Substation Location',),
            #'location' : fields.selection(STATUS_SELECTION,'Location',  default='Board A'),
            'asset_catg_id' : fields.many2one('asset.catg','Asset Catg Selection', domain="[('asset_catg_id', '=',place)]"),}

问题答案:

首先,原则上您的域是错误的。域名是什么,是“内部”的字段,换句话说,在其模型(例如现场nameidasset.catg模型)。因此,您应该先修复该问题。

如果domain依赖于另一个字段,则可以使用onchange方法返回domain(使用的占位符place_id)。像这样:

@api.onchange('place')
def onchange_place(self):
    res = {}
    if self.place:
        res['domain'] = {'asset_catg_id': [('place_id', '=', self.place.id)]}
    return res

PS 这是新v8 api的示例,但相同的原理也适用于旧api(然后,您无需使用decorator,也可以添加cr, uid, ids方法并通过视图调用它。新api不需要所有这些)。看起来您仍在使用旧api进行开发。

*对于旧api的 *更新

def onchange_place(self,cr, uid, ids, place, context=None):
    res = {}
    if self.place: #on old api it will return id, instead of record
        res['domain'] = {'asset_catg_id': [('place_id', '=', self.place)]}
    return res

然后在您的视图中(不知道您使用的是哪种视图):

<field name="place" on_change="onchange_place(place)"/>

仍然需要在其中定义一些字段,asset.catg以便将其用于匹配place字段。例如:

'place_id': fields.many2one('asset.parentlocation', 'Place')

然后,当您定义资产类别时,您可以设置资产所属的位置。然后,当您选择place时calendar.event,onchange方法将asset_catg_id正确地在域上设置域。



 类似资料:
  • 问题内容: 在我的模块中,我有以下many2one字段: 在以下位置: 我知道many2one场取 名字 字段的显示名称,但我想有它使用的组合,并在形式 我读过最好覆盖该方法,所以我尝试了以下方法: 并将其放在ÌnsuranceType`类中。既然什么也没发生:我是否必须将其放置在包含该字段的主类中?如果是这样,是否还有其他方法可以执行此操作,因为这也可能会更改其他many2one字段的显示方式?

  • 问题内容: 我的应用程序中有2个过滤器。根据某些条件,我想选择是否执行第二个过滤器。有没有办法做到这一点? 我做了一些谷歌搜索,但没有成功。我希望请求继续执行而不执行第二个过滤器。那可能吗? 任何帮助将不胜感激。 问题答案: 您可以在请求中设置一个属性,然后在第二个过滤器中对其进行检查。 您可以像这样简化上面的代码: 这样,您只需检查属性“ executeSecondFilter”的存在

  • 3.7 ABP领域层 - 数据过滤器 3.7.1 简介 在数据库开发中,我们一般会运用逻辑删除模式,即不直接从数据库删除数据,而是标记这笔数据为已删除。因此,如果实体被逻辑删除了,那么它就应该不会在应用程序中被检索到。要达到这种效果,我们需要在每次检索实体的查询语句上添加SQL的Where条件IsDeleted = false。这是个乏味的工作,但它是个容易被忘掉的事情。因此,我们应该要有个自动的

  • 我使用的是Spring rest api 4. x。我们要求根据请求参数过滤响应中的字段。 我的用户对象: 在这种情况下,我只需要返回请求参数“字段”中的字段。JSON输出应该只包含名字和姓氏。 有几种方法可以根据对象过滤Jackson中的字段。在我的例子中,我需要通过将字段列表传递给Jackson序列化器来动态过滤。 请分享一些想法。

  • 问题内容: 我有这样的课 我在我的参考 我的是根据Firebase查询的类生成的字典数组。然后,我得到了从另一个视图控制器(该函数是集合视图)生成的字符串。我想获取该字符串,然后使用与我之前的字符串相等的字符串过滤或搜索数组。然后删除不等于。不仅对象,而且包含非等键,值对的整个数组。我已经找了几天了,但我坚持过滤从类创建的字典数组。我已经看过并尝试过NSPredicates,for- in循环,但

  • 如何在执行查询前过滤ElasticSearch2.2中的文档。我引用了这个页面,但仍然无法框出正确的查询。 https://www.elastic.co/guide/en/elasticsearch/reference/2.2/query-filter-context.html 这就是我想做的…我有很多应该从句,每个有2个必须从句。WOLLE子句中的任何一个都应该匹配以检索文档。我只包括了一个sh

  • 例如insert时需要忽略某个特定属性, update时只更新某些属性, 查询时需要跳过大字段等。 FieldFilter/FieldMatcher提供细致的过滤选项,包括: 黑名单(locked) 白名单(actived) 忽略空值(ignoreNull) 忽略数值0(ignoreZero) 忽略日期属性(ignoreDate) 忽略空字符串(ignoreBlankStr) 忽略数值型主键(ig