Jquery 如何在Plone上使用日期范围搜索内容
普隆给了你成功的可能性。正常日期范围是通过仅使用最小日期设置的,因此范围介于今天和过去某个日期之间 我需要添加一个选项,设置开始日期和结束日期的日期范围 我正在考虑添加一个额外的选项,当选中该选项时,将显示两个日期选择器,但我不知道如何设置创建的Jquery 如何在Plone上使用日期范围搜索内容,jquery,date,search,plone,zpt,Jquery,Date,Search,Plone,Zpt,普隆给了你成功的可能性。正常日期范围是通过仅使用最小日期设置的,因此范围介于今天和过去某个日期之间 我需要添加一个选项,设置开始日期和结束日期的日期范围 我正在考虑添加一个额外的选项,当选中该选项时,将显示两个日期选择器,但我不知道如何设置创建的。query:record:list:date变量以使用这两个值 我尝试在查询变量上传递一个列表,但是我得到: Error Value: Invalid DateTime "[DateTime('2000/07/14 00:00:00 GMT-3'),
。query:record:list:date
变量以使用这两个值
我尝试在查询
变量上传递一个列表,但是我得到:
Error Value: Invalid DateTime "[DateTime('2000/07/14 00:00:00 GMT-3'), DateTime('2014/07/14 00:00:00 GMT-3')]"
以前有没有其他人发现有这样的要求?你是怎么解决的?是否应该将其移植到核心?您可能希望为索引名传递一个查询dict,其中包含一个range参数。假设您的索引被“修改”,并且您想要一个最小值和最大值的范围,例如:
>>> from DateTime import DateTime
>>> from Products.CMFCore.utils import getToolByName
>>> catalog = getToolByName(site)
>>> startDT = DateTime(2010,12,1)
>>> endDT = DateTime(2013,12,1)
>>> query = {
... 'modified': {
... query: (startDT, endDT),
... range: 'min:max',
... }
... }
...
>>> result = catalog.unrestrictedSearchResults(query) # or .search()
这里也记录了类似的内容:您可能希望传递索引名的查询dict,其中包含一个范围参数。假设您的索引被“修改”,并且您想要一个最小值和最大值的范围,例如:
>>> from DateTime import DateTime
>>> from Products.CMFCore.utils import getToolByName
>>> catalog = getToolByName(site)
>>> startDT = DateTime(2010,12,1)
>>> endDT = DateTime(2013,12,1)
>>> query = {
... 'modified': {
... query: (startDT, endDT),
... range: 'min:max',
... }
... }
...
>>> result = catalog.unrestrictedSearchResults(query) # or .search()
这里也记录了类似的内容:您可能希望传递索引名的查询dict,其中包含一个范围参数。假设您的索引被“修改”,并且您想要一个最小值和最大值的范围,例如:
>>> from DateTime import DateTime
>>> from Products.CMFCore.utils import getToolByName
>>> catalog = getToolByName(site)
>>> startDT = DateTime(2010,12,1)
>>> endDT = DateTime(2013,12,1)
>>> query = {
... 'modified': {
... query: (startDT, endDT),
... range: 'min:max',
... }
... }
...
>>> result = catalog.unrestrictedSearchResults(query) # or .search()
这里也记录了类似的内容:您可能希望传递索引名的查询dict,其中包含一个范围参数。假设您的索引被“修改”,并且您想要一个最小值和最大值的范围,例如:
>>> from DateTime import DateTime
>>> from Products.CMFCore.utils import getToolByName
>>> catalog = getToolByName(site)
>>> startDT = DateTime(2010,12,1)
>>> endDT = DateTime(2013,12,1)
>>> query = {
... 'modified': {
... query: (startDT, endDT),
... range: 'min:max',
... }
... }
...
>>> result = catalog.unrestrictedSearchResults(query) # or .search()
这里也有类似的记录:我花了一些时间研究这个问题,我有一个可行的解决方案 首先,我们需要了解Zope是如何工作的;当您使用类似“created.query:record:list:date”的名称命名表单元素时,您正在告诉Zope进行一些参数转换:
- 记录,将变量转换为记录属性
- 列表,将变量转换为Python列表
- date,将字符串转换为DateTime对象
'created':{'query':[DateTime('2014/07/09 00:00:00 GMT-3'),'range':'min']
我的错误是假设我必须在一个请求变量上传递所有列表元素
我在表单末尾添加的代码如下所示:
时间范围
var today=新日期();
var昨天=新日期();
昨日.setDate(昨日.getDate()-1);
var start=forday.toLocaleDateString().slice(0,10);
var end=today.toLocaleDateString().slice(0,10);
$(文档).ready(函数(){
$(“#范围开始”).datepicker();
$(“#范围结束”).datepicker();
$(“#范围开始”).hide();
$(“#范围结束”).hide();
});
$('input:radio')。更改(函数(){
var option=$('input:radio:checked','#searchform').val();
如果(选项==''){
$(“#范围开始”).val(开始);
$(“#范围开始”).show();
$('范围结束').val(结束);
$(“#范围结束”).show();
$('#range').val('min:max');
}
否则{
$(“#范围开始”).val(“”);
$(“#范围开始”).hide();
$(“#范围结束”).val(“”);
$(“#范围结束”).hide();
$('#range').val('min');
};
});
请特别注意以下事项:
- 开始日期和结束日期是与jQueryUI datepicker小部件关联的输入元素
- 两个输入元素与另一个共享相同的名称(
),这就是Zope魔术发生的地方:具有相同名称的所有输入元素的值在一个唯一的列表记录上转换,如下所示:created.query:record:list:date:ignore\u empty
'created':{'query':[DateTime('2014/07/15 00:00:00 GMT-3')、DateTime('2014/07/16 00:00:00 GMT-3')、'range':'min:max'}
- 我们设置了一个额外的参数转换器(
),它只是避免将没有值集的元素添加到列表中(我也将此转换器添加到了其他输入元素)ignore\u empty
- 当我们点击
元素时,我们必须初始化日期选择器;当我们单击任何其他元素时,我们需要清除这些值,以避免将它们添加到列表中查询日期范围
- 我们还根据@sdupton前面提到的查询类型更改
元素的值range
代码的JavaScript部分肯定会得到增强;我的技能真的很有限。我花了一些时间研究这个问题,我有一个可行的解决方案 首先,我们需要了解Zope是如何工作的;当您使用类似“created.query:record:list:date”的名称命名表单元素时,您正在告诉Zope进行一些参数转换:
- 记录,将变量转换为记录属性
- 列表,将变量转换为Python列表
- date,将字符串转换为DateTime对象
'created':{'query':[DateTime('2014/07/09 00:00:00 GMT-3'),'range':'min']
我的错误是假设我必须在一个请求变量上传递所有列表元素
我在表单末尾添加的代码如下所示:
时间范围
var today=新日期();
var昨天=新日期();
昨日.setDate(昨日.getDate()-1);
var start=forday.toLocaleDateString().slice(0,10);
var end=today.toLocaleDateString().slice(0,10);
$(文档).ready(函数(){
$(“#范围开始”).datepicker();
$(“#范围结束”).datepicker();
$('#范围sta