В вашем поле timestamp
вы предоставляете вызываемый элемент - от datetime.datetime.utcnow
до default
, поэтому каждый раз, когда создается экземпляр формы, вызывается вызываемый элемент и используется новый результат.
В вашем поле name
, datetime.datetime.utcnow().timestamp()
оценивается при компиляции формы, поэтому значение по умолчанию одинаково для каждого экземпляра формы.
Если вы хотите значение по умолчаниюname
для оценки каждый раз, когда создается экземпляр формы, передайте ей функцию (вызываемую), которая возвращает datetime.datetime.utcnow().timestamp()
.
Например:
def get_default():
datetime.datetime.utcnow().timestamp()
class MyForm(FlaskForm):
timestamp = DateTimeField("Timestamp", default=datetime.utcnow, validators=[Required()])
name = StringField("Name", default=get_default, validators=[Optional()])
или, если вы предпочитаетеВы можете использовать лямбда :
class MyForm(FlaskForm):
timestamp = DateTimeField("Timestamp", default=datetime.utcnow, validators=[Required()])
name = StringField("Name", default=lambda : datetime.datetime.utcnow().timestamp(), validators=[Optional()])