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"); } }) }) }) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |