Hél*_*éna 6 python django jquery
我使用jQuery月选择器(没有日期),格式如:201110.
我想设置一个最小日期(参见代码),所以首先在django forms.py中定义它为date-min,然后将此日期解析为html.首先是最小/最大范围.(虽然现在不行).
然后为了实现"to"日期总是晚于"from"日期,我还需要使用min/max函数,然后它会覆盖我从SQL设置的前一个月范围.
目前的情况是我可以实现"到"日期>"从"日期.但是最小日期(来自MYSQL)现在不起作用.
我怎么能解决这个冲突,请告诉我.提前致谢
感谢您的回复.
<script type="text/javascript">
$(function() {
$( "#from, #to" ).datepicker({
changeMonth: true,
changeYear: true,
showButtonPanel: true,
dateFormat: 'yy MM',
minDate: $(this).date-min, ///it is here doesn't work, the minDate is coming from Django
onClose: function(dateText, inst) {
var month = $("#ui-datepicker-div .ui-datepicker-month :selected").val();
var year = $("#ui-datepicker-div .ui-datepicker-year :selected").val();
$(this).datepicker('setDate', new Date(year, month, 1));
},
beforeShow : function(input, inst) {
if ((datestr = $(this).val()).length > 0) {
year = datestr.substring(datestr.length-4, datestr.length);
month = jQuery.inArray(datestr.substring(0, datestr.length-5), $(this).datepicker('option', 'monthNames'));
$(this).datepicker('option', 'defaultDate', new Date(year, month, 1));
$(this).datepicker('setDate', new Date(year, month, 1));
}
var other = this.id == "from" ? "#to" : "#from";
var option = this.id == "from" ? "maxDate" : "minDate";
if ((selectedDate = $(other).val()).length > 0) {
year = selectedDate.substring(selectedDate.length-4, selectedDate.length);
month = jQuery.inArray(selectedDate.substring(0, selectedDate.length-5), $(this).datepicker('option', 'monthNames'));
$(this).datepicker( "option", option, new Date(year, month, 1));
}
}
});
$("#btnShow").click(function(){
if ($("#from").val().length == 0 || $("#to").val().length == 0){
alert('All fields are required');
}
else{
alert('Selected Month Range :'+ $("#from").val() + ' to ' + $("#to").val());
}
})
});
</script>
Run Code Online (Sandbox Code Playgroud)
我如何在dJango中定义我的最小日期:
在models.py中
class XXX(models.Model):
start_date=models.DateField(auto_now_add=True)
end_date=models.DateField(auto_now_add=True)
Run Code Online (Sandbox Code Playgroud)
在forms.py中
class Meta:
model = XXX
fields = ('start_date','end_date')
date_min=XXX.objects.all().aggregate(Min('date')) <this field is NOT defined in models.py, is that OK?; and format is like 2011-11-01 -->
widgets = {
'start_date': forms.DateInput(attrs={'class':'datepicker',
'date-min':date_min,
}),
}
Run Code Online (Sandbox Code Playgroud)
首先,你应该做
$(this).attr('date-min')
Run Code Online (Sandbox Code Playgroud)
代替
$(this).date-min
Run Code Online (Sandbox Code Playgroud)
来获取date-min属性。
$(this)您的下一个问题是您在 dom 就绪回调内部调用,其中 this 指的是文档对象而不是#fromor#to元素。
您正在寻找的解决方案是
$(function() {
$( "#from, #to" ).each(function() {
$(this).datepicker({
....
minDate: $(this).attr('date-min'),
....
})
})
)
Run Code Online (Sandbox Code Playgroud)
我不确定这一行:
date_min=XXX.objects.all().aggregate(Min('date')) <this field is NOT defined in models.py, is that OK?; and format is like 2011-11-01 -->
Run Code Online (Sandbox Code Playgroud)
表单中有一个未在相关模型中描述的字段是可以的,但是您不想在这里得到类似Min('start-date')或 的内容吗Min('end-date')?你的表格是否定义为类似的东西
class XXXForm(forms.ModelForm):
class Meta:
....
Run Code Online (Sandbox Code Playgroud)
不只是
class Meta:
....
Run Code Online (Sandbox Code Playgroud)