我想为 frappe 查询创建一个过滤器,以查找日期介于两个其他日期之间的值。具体来说,工资单 start_date 和 end_date 应包含出席日期。
doc_name = ##Some Salary Slip
document = frappe.get_doc('Salary Slip', doc_name)
leave_count = frappe.db.count('Attendance', filter={
'employee': document.get('employee'),
'status': 'Present',
'late_entry': 1,
'attendance_date': ['>=', document.get('start_date')],
'attendance_date': ['<=', document.get('end_date')]})
现在这将不起作用,因为字典中有重复的条目。因此,按照1和2,我应该能够使用列表作为过滤器,但是像这样尝试
leave_count = frappe.db.count('Attendance', filters=[
['employee', '=', document.get('employee')],
['status', '=', 'Present'],
['late_entry', '=', 1],
['attendance_date', '>=', document.get('start_date')],
['attendance_date', '<=', document.get('end_date')]])
但它会引发错误,
TypeError:只能将str(不是“list”)连接到str
快速浏览一下代码解释说,目前只有字典支持需要键而不是列表的 for 循环,并且between
不是选项,因为该运算符会自动转换为 '=' 并且不起作用。
那么我该怎么做呢?
编辑:目前最简单的方法是使用 frappe.db.get_list 并在 python 中计算结果。虽然这是低效的,但它确实有效。