【问题标题】:Django DateTimeField saveDjango DateTimeField 保存
【发布时间】:2012-01-23 19:55:09
【问题描述】:

我有模特

class Unit(models.Model):
    date = models.DateTimeField()
    name = models.CharField(max_length = 128)

然后我对 js jquery ui datepicker 有一个看法。然后我有一个带有

的ajax post函数
data_send['date'] = $('#date').value;
data_send['name'] = $('#name').value;
$.post("/url_1/",data_send, function(data_recieve){
    alert(data_recieve);
});

然后在一个视图中我试图保存单位

def url_1(request):
    unit = Unit.objects.get(pk = 1)
    unit.date = request.POST['date']
    unit.name = request.POST['name']
    unit.save()
    return HttpResponse('ok')

Unit.name 改变,但 unit.date 没有改变。我使用 django 1.3。我没有csrf保护。我从服务器收到“好的”。 为什么 unit.date 不保存?

谢谢

【问题讨论】:

  • request.POST['date'] 在您看来有什么价值?我想这是你的日期选择器格式,对于 django 我认为日期时间字段格式是 YYYY-mm-dd HH:MM:SS 我认为默认的日期选择器是 dd-mm-yy
  • 哦,是的。所以日期选择器的格式是 dd-mm-yyyy。好的,也许有一个标准的 js 序列化器,或者 django 对象可能有类似编码的东西。米?

标签: django datetime django-models


【解决方案1】:

由于 django 日期时间字段是 datetime.datetime python 实例的表示,我想在插入数据库之前确保我有一个有效的实例。

您可以使用 datetime 模块来实现这一点,而不是将 unit.date 保存为字符串

from datetime import datetime

try:
  valid_datetime = datetime.strptime(request.POST['date'], '%d-%m-%Y')
except ValueError:
  # handle this

然后您可以将valid_datetime保存为您的unit.date

strptime 的第二个参数使用以下值格式化,它应该与您的日期选择器格式匹配 http://docs.python.org/library/datetime.html#strftime-strptime-behavior

【讨论】:

  • 错误:时间数据 '%d.%m.%Y' 与格式 '24.01.2012' 不匹配。我应该转义像 '%d\.%m\.%Y' 这样的点吗?
猜你喜欢
  • 2016-05-20
  • 2015-01-31
  • 1970-01-01
  • 2015-03-24
  • 2015-06-19
  • 2015-02-04
  • 2023-03-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多