加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – Django中的FullCalendar

发布时间:2020-12-20 12:33:33 所属栏目:Python 来源:网络整理
导读:所以,我有预约模特 class Appointment(models.Model): user = models.ForeignKey(User) date = models.DateField() time = models.TimeField() doctorName = models.CharField(max_length=50)` 我想在FullCalendar工具中实现它.我不知道怎么开始.任何帮助表
所以,我有预约模特

class Appointment(models.Model):
    user = models.ForeignKey(User)
    date = models.DateField()
    time = models.TimeField()
    doctorName = models.CharField(max_length=50)`

我想在FullCalendar工具中实现它.我不知道怎么开始.任何帮助表示赞赏.谢谢.

解决方法

既然你的问题显示你没有尝试任何东西,猜测你知道javascript并尝试了一些完整的日历js.

假设您有一个名为Event的模型,用于在日历中显示不同的事件.

class Events(models.Model):
    even_id = models.AutoField(primary_key=True)
    event_name = models.CharField(max_length=255,null=True,blank=True)
    start_date = models.DateTimeField(null=True,blank=True)
    end_date = models.DateTimeField(null=True,blank=True)
    event_type = models.CharField(max_length=10,blank=True)

    def __str__(self):
        return self.event_name

在你的views.py中

def event(request):
    all_events = Events.objects.all()
    get_event_types = Events.objects.only('event_type')

    # if filters applied then get parameter and filter based on condition else return object
    if request.GET:  
        event_arr = []
        if request.GET.get('event_type') == "all":
            all_events = Events.objects.all()
        else:   
            all_events = Events.objects.filter(event_type__icontains=request.GET.get('event_type'))

        for i in all_events:
            event_sub_arr = {}
            event_sub_arr['title'] = i.event_name
            start_date = datetime.datetime.strptime(str(i.start_date.date()),"%Y-%m-%d").strftime("%Y-%m-%d")
            end_date = datetime.datetime.strptime(str(i.end_date.date()),"%Y-%m-%d").strftime("%Y-%m-%d")
            event_sub_arr['start'] = start_date
            event_sub_arr['end'] = end_date
            event_arr.append(event_sub_arr)
        return HttpResponse(json.dumps(event_arr))

    context = {
        "events":all_events,"get_event_types":get_event_types,}
    return render(request,'admin/poll/event_management.html',context)

最后在您的模板设置完整日历中包含必要的CSS,JS文件和HTML代码.然后,

<script>

    $(document).ready(function() {

        $('#calendar').fullCalendar({
            defaultDate: '2016-07-19',editable: true,eventLimit: true,// allow "more" link when too many events
            events: [
                {% for i in events %}
                {
                    title: "{{ i.event_name}}",start: '{{ i.start_date|date:"Y-m-d" }}',end: '{{ i.end_date|date:"Y-m-d" }}',},{% endfor %}

            ]
        });

    });

</script>

动态地在某些事件上,您需要更改事件,例如通过更改您需要过滤事件的下拉列表,

$(document).ready(function(){
        $('.event_types').on('change',function(){
            var event_type = $.trim($(this).val());
            $.ajax({
                url: "{% url 'manage-event' %}",type: 'GET',data:{"event_type":event_type},cache: false,success: function (response) {
                    var event_arr = $.parseJSON(response);
                    $('#calendar').fullCalendar('removeEvents');
                    $('#calendar').fullCalendar('addEventSource',event_arr);         
                    $('#calendar').fullCalendar('rerenderEvents' );

                },error: function () {
                    alert("error");
                }


            })
            })

    })

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读