2012-01-23 10 views
1

У меня есть модельДжанго DateTimeField сохранить

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

Тогда у меня есть представление с JS JQuery UI DatePicker. Тогда у меня есть АЯКС пост функции с

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

Благодаря

+0

какое значение имеет 'request.POST ['date']' на ваш взгляд? Я бы предположил, что это ваш формат datepicker, для django я думаю, что формат поля даты и времени YYYY-mm-dd HH: MM: SS, я думаю, что датапик по умолчанию - dd-mm-yy – dm03514

+0

О да. Таким образом, формат datepicker равен dd-mm-yyyy. Хорошо, может быть, стандартный сериализатор js или, может быть, объекты django имеют что-то вроде кодирования. м? –

ответ

6

Поскольку Джанго DateTime поле является представление экземпляра datetime.datetime питона, я хотел, чтобы убедиться, что у меня есть действующий экземпляр, прежде чем вставлять в базу данных.

вы можете использовать модуль 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

+0

Ошибка: данные времени '% d.% M.% Y' не соответствуют формату '24 .01.2012 '. Должен ли я избегать точек, например «% d \.% M \.% Y»? –

Смежные вопросы