Джанго DateTimeField сохранить - PullRequest
1 голос
/ 23 января 2012

У меня есть модель

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

Тогда у меня есть представление с помощью js jquery ui datepicker. Тогда у меня есть функция записи ajax с

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 не сохраняется?

Спасибо

1 Ответ

7 голосов
/ 24 января 2012

Поскольку поле datetime 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

...