2016-06-30 3 views

ответ

1

Примечание: Этот ответ не работает! Правильный ответ от @elecay. Если вы это сделаете, время по умолчанию будет установлено во время загрузки как одно и то же для всех записей.

Вы можете установить значение default для datetime поля на определение схемы, например, так:

from datetime import datetime 

your_schema = { 
    'joinDate': { 
     'type': 'datetime', 
     'default': datetime.utcnow() 
    }, 
    # rest of schema 
} 

В примере, текущее время UTC устанавливается в joinDate, если его нет в POST. Проверьте правила определения схемы here.

+2

Этот ответ неправильный. В этом случае «joinDate» будет всегда одинаковым; это дата, когда вы запускаете приложение, потому что в это время вызывается utcnow(). Для того, что вы ищете, вы можете использовать события вставки: http://python-eve.org/features.html#insert-events. Вы можете отредактировать объект непосредственно перед вставкой в ​​БД, например: item ["joinDate"] = datetime.utcnow() – elecay

+0

Это правда, используя крючок события, как вы предложили. Вы должны опубликовать это, чтобы стать правильным ответом. – gcw

+0

@ Ranjith, вы должны отметить ответ elecay как правильный. Это не работает. – gcw

-1

Вы можете использовать метод Python datetime.datetime.now() так:

>>> import datetime 
>>> datetime.datetime.now() 
datetime.datetime(2016, 6, 30, 14, 51, 25, 977000) 
3

Вы можете определить Insert Event, например:

from datetime import datetime 

"""some code omitted""" 

def insert_join_date(items): 
    for item in items: 
     item["joinDate"] = datetime.utcnow() 

app.on_insert_your_schema += insert_join_date 

Предыдущий пример основан на on_insert_<resource_name>(items) и применяется к конкретному ресурсу - your_schema в этом случае. Если эта логика должна применяться ко всем схемам, то может использоваться on_insert(resource_name, items).

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