Я использую поршень для записи JSON api для приложения, которое я пишу, которое обрабатывает повторяющиеся события календаря.Дескриптору 'date' требуется объект 'datetime.datetime', но получил 'unicode'
Мой API работает для регулярных событий, когда я попытался добавить логику для обработки повторения, я начал получать следующее сообщение об ошибке:
descriptor 'date' requires a 'datetime.datetime' object but received a 'unicode'
Вот мой handlers.py
:
from piston.handler import BaseHandler
from lessons.models import NewEvent, EachEvent
import calendar
from datetime import datetime, timedelta
class CalendarHandler(BaseHandler):
allowed_methods = ('GET',)
model = EachEvent
fields = ('actualDate', ('manager', ('firstName', 'lastName')))
def next_date(startDate, recurrence, rangeStart):
sd = startDate
while (sd < rangeStart):
print sd;
sd += datetime.timedelta(recurrence)
return sd
def read(self, request, uid, month, year):
qs = NewEvent.objects.filter(manager__boss = request.user).filter(endDate__gte=datetime.date(year, month, 1)).filter(startDate__lte=datetime.date(year, month, calendar.mdays[month]))
lessonList = []
qsList = list(qs)
for l in qsList:
if l.frequency == 0:
x = EachLesson()
x.lessonID = l.id
x.actualDate = l.startDate
x.manager = l.manager
lessonList.append(x)
else:
sd = next_date(l.startDate, l.frequency, datetime.date(year, month, 1))
while (sd <= datetime.date(year, month, calendar.mdays[month])):
x = EachLesson()
x.lessonID = l.id
x.actualDate = sd
x.manager = l.manager
lessonList.append(x)
sd += datetime.timedelta(recurrence)
return lessonList
frequency
является IntegerField, actualDate
, startDate
и endDate
- все DateField.
Мой URLconf принимает uid, год и месяц, все из которых передаются в качестве параметров для метода CalendarHandler.read.
К сожалению, я забыл упомянуть другую часть того, что вам нужно изменить. См. Мой отредактированный ответ. – BrenBarn
Теперь это говорит мне, что требуется целое число. Я пробовал различные комбинации изменения datetime.date до даты, и кажется, что первым вызовом (в фильтре) является тот, который меняет сообщение об ошибке. Изменение двух других (пока) не влияет. –
Какое содержимое ваших переменных год и месяц? – BrenBarn