首页 > 解决方案 > django:如何根据数据库中的条目禁用日期选择器中的日期?

问题描述

我在数据库中的这个下面的模型中定义了 n 个日期,这些是由管理员直接插入的,而不是由 modelforms 或任何东西。

class Calendar(models.Model):

    date = models.DateField()
    occasion = models.CharField(max_length = 20)

具有日期字段的表单,

class LeaveRequestForm(ModelForm):

    class Meta:
        fields = (... "from_date", "to_date" ...)
        model = Leave

        widgets =  {
            ...
            'from_date' : DateInput(attrs={'class': 'datepicker'}),
            'to_date' : DateInput(attrs={'class': 'datepicker'}),
            ...

        }

我有这个禁用周末的日期选择器脚本,

<script>

    $(document).ready(function() {
        $('.datepicker').datepicker(
          {
            minDate : 0,
            beforeShowDay : $.datepicker.noWeekends
          }
        );
    });

    </script>

现在我也想禁用数据库中定义的日期+周末。我怎么做?

更新 :

var array = {{ 
               {% for x in disabled_dates %}
               {{x.dates}}
               {% endfor  %} 
            }}

$('datepicker').datepicker({
    beforeShowDay: function(date){
        var string = jQuery.datepicker.formatDate('yy-mm-dd', date);
        return array.indexOf(string) != -1 ? [false] : $.datepicker.noWeekends(date);
    }
});

还没有运气!

标签: javascriptpythonjquerydjango

解决方案


这里这里的答案中引用,

var array = [
    {% for x in disabled_dates %}
        {{x.dates}}
    {% endfor  %} 
]

$('datepicker').datepicker({
    beforeShowDay: function(date){
        var string = jQuery.datepicker.formatDate('yy-mm-dd', date);
        return array.indexOf(string) != -1 ? [false] : $.datepicker.noWeekends(date);
    }
});

编辑:在您的日期数组旁边添加周末。

编辑:为日期添加了 for 循环(虽然我认为你应该从你的视图函数中发送一个准备好的列表)

希望这可以帮助!


推荐阅读