WTForms не сохраняют правильный тип данных в хранилище данных - PullRequest
0 голосов
/ 16 мая 2019

У меня есть приложение Python Flask, которое использует WTForms и Google Cloud Datastore.Независимо от типа поля WTForms, которое я использую, значение сохраняется в виде строки.

Я рассмотрел стандартный способ определения модели в колбе Питона, но подумал, что объявление модели WTForms - это все, что нужно.

модель

Project_Description = TextAreaField('Project Description')

шаблон

{{ form.Project_Description (rows='10',
  class_="govuk-textarea govuk-!-width-two-thirds",)
}}

функциональность создания / обновления хранилища данных

def update(self, data, id=None):
    if id:
        key = client.key('ProjectDetails', int(id))
    else:
        key = client.key('ProjectDetails')

    entity = datastore.Entity(key=key, exclude_from_indexes=('Project_Description'))
    entity.update(data)
    client.put(entity)

    return Datastore_Client().from_datastore(entity)

Я удаляю ProjectDescription из индексации, как когда я его получаю вСохранить как текст или BLOB-объект. Я не хочу ограничивать количество байтов.Когда я отправляю форму, данные сохраняются как стандартная строка, а не как текст или блоб.Я бы предпочел сохранить как каплю, но не уверен, как.

1 Ответ

0 голосов
/ 16 мая 2019

В библиотеках Cloud Datastore любой неиндексированный текст имеет ограничение размера 1 МБ-89, как указано в документации Концепции сущностей . Кроме того, если вы сохраните описание вашего проекта как байт вместо str в Python 3, тогда значение будет сохранено как blobl

...