gpt4 book ai didi

django - 如何将 JSON 对象从 Django 传递给 FullCalendar(通过序列化模型)?

转载 作者:行者123 更新时间:2023-12-01 09:38:22 24 4
gpt4 key购买 nike

FullCalendar支持通过 AJAX 接收 JSON 对象的事件,这可以在初始化或稍后完成,如下所示:

$('#calendar').fullCalendar('addEventSource', "/{{ user }}/events/" );

我的 Django View 中的序列化本身如下所示:

...
events = Event.objects.filter(user=request.user, start__gte=start, end__lte=end)
message = serializers.serialize("json", events, ensure_ascii=False)
...

返回的 JSON 对象如下所示:

[{"pk": 2, "model": "main.event", "fields": {"url": null, "start": "2010-10-09 08:30:00", "end": "2010-10-09 10:30:00", "user": 1, "title": "sdf"}}, {"pk": 3, "model": "main.event", "fields": {"url": null, "start": "2010-10-03 08:30:00", "end": "2010-10-03 12:00:00", "user": 1, "title": "sdf2"}}]

Fullcalendar 事件接受以下变量:id、title、start、end、allDay 和 url。

我认为 FullCalendar 现在正在接收我的 JSON 对象(不确定如何检查),但它可能无法接受,我怎样才能让它接受 FullCalendar?它可能看起来也像这样:

[{id: 1, title: 'Title1', start: new Date(2010, 10, 3, 8, 30), end: new Date(2010, 10, 3, 12, 0), allDay: false, url: false}]

或:

[{"id": 1, "title": 'Title1', "start": new Date(2010, 10, 3, 8, 30), "end": new Date(2010, 10, 3, 12, 0), "allDay": false, "url": false}]

或者别的什么,不确定。

所以基本上情况是我以前没有使用过 JSON 对象,我不确定如何最好地将模型序列化为可接受的 JSON 对象,有什么想法吗?

最佳答案

不要为此使用 Django 的内置序列化程序。我几乎从不使用它们——它们非常不灵活。

幸运的是,自己序列化内容非常简单。

from django.utils import simplejson
from django.core.serializers.json import DjangoJSONEncoder

events = Event.objects.filter(
user=request.user, start__gte=start, end__lte=end
).values('id', 'title', 'start', 'end')
data = simplejson.dumps(list(events), cls=DjangoJSONEncoder)

这里我只是通过 values 从查询集中获取一个字典,并将它传递给 simplejson 以对字段的选择列表进行编码。我需要使用 DjangoJSONEncoder 因为默认情况下 json 不知道日期时间,所以这个编码器添加了这个功能。

关于django - 如何将 JSON 对象从 Django 传递给 FullCalendar(通过序列化模型)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3915271/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com