Django 访问日期时间值时出现问题(Unicode对象没有属性“strftime”)

Django 访问日期时间值时出现问题(Unicode对象没有属性“strftime”),django,datetime,django-views,Django,Datetime,Django Views,我有一个AJAX处理视图,它包含多条信息,其中两条是unicode日期时间值 但是,当我试图直接从对象访问datetime值start/end时,它似乎仍然是unicode 我以为储蓄变成了约会时间 lid = int(postdata['lid']) location = Group.objects.get(id=lid) pgid = int(postdata['pgid']) program = Group.objects.get(id=pgid) start = postdata['st

我有一个AJAX处理视图,它包含多条信息,其中两条是unicode日期时间值

但是,当我试图直接从对象访问datetime值start/end时,它似乎仍然是unicode

我以为储蓄变成了约会时间

lid = int(postdata['lid'])
location = Group.objects.get(id=lid)
pgid = int(postdata['pgid'])
program = Group.objects.get(id=pgid)
start = postdata['start']
end = postdata['end']
eid = int(postdata['eid'])
creator = Employee.objects.get(id=eid)
description = postdata['description']

shift = ReliefShift()
shift.start = start
shift.end = end
shift.creator = creator
shift.description = description
shift.location = location
shift.program = program
shift.save()

alertModule = 'Relief Shifts Available'
alertMessage = 'A new relief shift has been posted for {0} from {1} to {2}. Visit the <a href="/staff/program/open-relief-shifts/">Relief Shifts page</a> for more details and to sign up.'.format(shift.location, shift.start.strftime('%b %d @ %I:%M%p'), shift.end.strftime('%b %d @ %I:%M%p'))
调用shift.save会将日期时间保存到数据库中,但不会更新shift。保存shift对象后,可以通过调用


直接从post数据中读取值不是好的做法。最好使用or。Django将负责将值转换为datetime对象,您将能够从form.u数据或从实例(如果您使用的是模型表单)访问datetime。

您从哪里获得postdata?是的,就是这样。答案是从数据库刷新。不过,有趣的是,我尝试了shift=shift.objects.getpk=shift.pk,但它没有更新。如果从\u数据库刷新\u,则使用shift=shift.objects.getpk=shift.pk应该可以工作。可能您确实执行了Shift.objects.getpk=Shift.pk,但没有将结果分配给Shift。只要你的主键是id,用id代替pk不会有任何区别。如果是pk有关系吗?我使用了id。如果它是一个模型表单,为什么不能只执行x=shift.save然后获取x.start?@trpt4him这就是为什么我建议在回答中使用模型表单。如果表单有效,则调用shift=form.save,然后shift.start将是datetime。
shift.start = <unicode string>
shift.save()
# At this point, shift.start will still be a string
shift.refresh_from_db()

# refresh_from_db is new in Django 1.8. In early versions you would do:
shift = Shift.objects.get(pk=shift.pk)