Например, для ключа:Как установить значение datetime по умолчанию в eve?
'joinDate' : {'type' : 'datetime'}
Как я могу сделать это автоматически публиковались с текущей датой, не будучи явно задан в методе POST?
Например, для ключа:Как установить значение datetime по умолчанию в eve?
'joinDate' : {'type' : 'datetime'}
Как я могу сделать это автоматически публиковались с текущей датой, не будучи явно задан в методе POST?
Примечание: Этот ответ не работает! Правильный ответ от @elecay. Если вы это сделаете, время по умолчанию будет установлено во время загрузки как одно и то же для всех записей.
Вы можете установить значение default
для datetime
поля на определение схемы, например, так:
from datetime import datetime
your_schema = {
'joinDate': {
'type': 'datetime',
'default': datetime.utcnow()
},
# rest of schema
}
В примере, текущее время UTC устанавливается в joinDate
, если его нет в POST
. Проверьте правила определения схемы here.
Вы можете использовать метод Python datetime.datetime.now()
так:
>>> import datetime
>>> datetime.datetime.now()
datetime.datetime(2016, 6, 30, 14, 51, 25, 977000)
Вы можете определить 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)
.
Этот ответ неправильный. В этом случае «joinDate» будет всегда одинаковым; это дата, когда вы запускаете приложение, потому что в это время вызывается utcnow(). Для того, что вы ищете, вы можете использовать события вставки: http://python-eve.org/features.html#insert-events. Вы можете отредактировать объект непосредственно перед вставкой в БД, например: item ["joinDate"] = datetime.utcnow() – elecay
Это правда, используя крючок события, как вы предложили. Вы должны опубликовать это, чтобы стать правильным ответом. – gcw
@ Ranjith, вы должны отметить ответ elecay как правильный. Это не работает. – gcw