Python 如何单独比较(域)多个字段的值?

Python 如何单独比较(域)多个字段的值?,python,xml,odoo,Python,Xml,Odoo,我想通过用户输入的值来比较一个字段many2manyline\u mission的值,只是为了检查员工是否已经在某个时间间隔内,我尝试了此代码,但不起作用: 我的领域很多: line_mission = fields.Many2many('hr.employee', string='Employés', help="Employee sent on mission", copy=True, auto_join=True,readonly=

我想通过用户输入的值来比较一个字段many2many
line\u mission
的值,只是为了检查员工是否已经在某个时间间隔内,我尝试了此代码,但不起作用:

我的领域很多:

line_mission = fields.Many2many('hr.employee', string='Employés', help="Employee sent on mission", 
                            copy=True, auto_join=True,readonly=True, states={'draft': [('readonly', False)]})
和我的功能,用于检查员工是否在
任务开始日期
任务结束日期
之间:

    @api.multi
    @api.constrains('mission_start_date', 'mission_end_date')
    @api.depends('line_mission.name')
    def _check_date(self):
        for mission in self:    
            employee = self.env['hr.employee'].search_count([('name', '=', self.id)])
            domain = [
                ('mission_start_date', '<=', mission.mission_end_date),
                ('mission_end_date', '>=', mission.mission_start_date),
                ('id', '!=', mission.id),
                ('state', 'not in', ['end_mission']),
            ]
            nmissions = self.search_count(domain)
            if employee in mission.line_mission.name and nmissions:
                raise UserError(_('Vous ne pouvez pas avoir 2 missions qui se chevauchent le même jour!'))
@api.multi
@api.约束(“任务开始日期”、“任务结束日期”)
@api.depends('line_mission.name'))
定义检查日期(自我):
自我使命:
employee=self.env['hr.employee'].search_count([('name','=',self.id)])
域=[
('mission_start_date','=',mission.mission_start_date),
('id','!=',mission.id),
(‘国家’、‘不在’、[‘任务结束’),
]
nmissions=self.search\u计数(域)
如果mission.line_mission.name和N任务中的员工:
raise UserError('Vous ne pouvez pas avoir 2 missions QUE se chevauchent le même jour!'))

您的函数中存在一些问题

  • 您不需要使用
    api.dependens
    ,因为
    api.constraints
    已经触发了函数

  • 您应该在
    api.constraints
    中添加
    line\u任务
    ,因为如果employee many2many字段发生更改,则应检查约束

  • 尝试遵守Odoo指南,并将您的many2many字段从
    line\u任务
    重命名/重构为
    employee\u id
    employee\u on\u任务

  • 如果以后需要使用记录(集合),请不要使用
    search\u count
    。means是foreach循环中的第一行

  • 在比较中使用记录(集合),例如在
    if

  • @api.multi
    @api.约束(“任务开始日期”、“任务结束日期”、“线路任务”)
    定义检查日期(自我):
    自我使命:
    #下面的搜索真的很奇怪
    #你总是只找到一个吗?
    #你真的想用“ìd”搜索“name”吗?
    employee=self.env['hr.employee'].search([('name','=',self.id)])
    域=[
    ('mission_start_date','=',mission.mission_start_date),
    ('id','!=',mission.id),
    (‘国家’、‘不在’、[‘任务结束’),
    ]
    nmissions=self.search\u计数(域)
    #检查记录是否在记录集中
    如果员工在mission.line_任务和任务中:
    raise UserError('Vous ne pouvez pas avoir 2 missions QUE se chevauchent le même jour!'))
    
    您的函数中存在一些问题

  • 您不需要使用
    api.dependens
    ,因为
    api.constraints
    已经触发了函数

  • 您应该在
    api.constraints
    中添加
    line\u任务
    ,因为如果employee many2many字段发生更改,则应检查约束

  • 尝试遵守Odoo指南,并将您的many2many字段从
    line\u任务
    重命名/重构为
    employee\u id
    employee\u on\u任务

  • 如果以后需要使用记录(集合),请不要使用
    search\u count
    。means是foreach循环中的第一行

  • 在比较中使用记录(集合),例如在
    if

  • @api.multi
    @api.约束(“任务开始日期”、“任务结束日期”、“线路任务”)
    定义检查日期(自我):
    自我使命:
    #下面的搜索真的很奇怪
    #你总是只找到一个吗?
    #你真的想用“ìd”搜索“name”吗?
    employee=self.env['hr.employee'].search([('name','=',self.id)])
    域=[
    ('mission_start_date','=',mission.mission_start_date),
    ('id','!=',mission.id),
    (‘国家’、‘不在’、[‘任务结束’),
    ]
    nmissions=self.search\u计数(域)
    #检查记录是否在记录集中
    如果员工在mission.line_任务和任务中:
    raise UserError('Vous ne pouvez pas avoir 2 missions QUE se chevauchent le même jour!'))
    
    我尝试了你的代码,但它不起作用,在一段时间间隔内,员工之间总是有重叠。问题可能在于员工搜索,我不理解。这就是为什么我把评论放在上面。我只是想提醒你一些错误。我甚至不知道这个约束是在什么模型上实现的。我尝试了你的代码。它不起作用,在一段时间间隔内,员工之间总是有重叠。问题可能在于员工搜索,我不理解。这就是为什么我把评论放在上面。我只是想提醒你一些错误。我甚至不知道这个约束是在什么模型上实现的。