Как отправить результаты запроса в поле WTForm?

Я использую SQLalchemy со многими таблицами для управления тегами блога. Мне нужна помощь, отображающая значения тега в поле формы TextArea, где они могут быть отредактированы. Прямо сейчас, когда я визуализирую, я вижу запрос поиска.

Модель

Связь между тегом и почтой определена в `тегах '

class Tag(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(50), unique=True) url = db.Column(db.String(120), unique=True) def __init__(self, name, url): self.name = name self.url = url class Post(db.Model): id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(80)) body = db.Column(db.Text) pub_date = db.Column(db.DateTime) tags = db.relationship('Tag', secondary=posts_tags, backref='posts', lazy='dynamic') class Tag(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(50), unique=True) url = db.Column(db.String(120), unique=True) 

Моя проблема заключается в рендеринге полей тегов в WTF. Я выводит запрос в поле вместо результатов.

Я вижу два варианта исправления, но я не знаю, как это сделать ….

a.) В представлении, interate через теги и отображать значения. б). В настраиваемом поле каким-то образом передайте идентификатор сообщения и запустите запрос перед тем, как разбить поле. Что-то вроде этого….

Field Hack Это работает, но умеет динамически передавать идентификатор сообщения в поле. *

 class TagListField(Field): widget = TextArea() def _value(self): q = Post.query.join(posts_tags, (posts_tags.c.post_id == {{ NEED HELP HERE}})) taglist = [] for p in q: for t in p.tags: taglist.append(t.name) taglist return ", ".join(taglist) def process_formdata(self, valuelist): if valuelist: self.data = [x.strip() for x in valuelist[0].split(',')] else: self.data = [] 

Хотели бы видеть варианты просмотра и поля … Спасибо и заблаговременно …

  • Создайте динамическую форму, используя флягу-wtf и sqlalchemy
  • Использование метода populate_obj () WTForms с фреймворком micro framework
  • Установка значения по умолчанию для выбора удаляет введенные параметры для заполнения формы
  • Как использовать поле FieldList WFForms для FormFields?
  • Flask-SQLAlchemy: как условно вставить или обновить строку
  • Определите, какая кнопка WTForms была нажата в окне «Флажок»
  • Подтвердить форму WTForm на основе нажатой кнопки
  • Почему приложение Flask создает два процесса?
  • One Solution collect form web for “Как отправить результаты запроса в поле WTForm?”

    Вы используете _value неправильно, оно используется для отображения данных, а не для установки данных.

    Данные устанавливаются в форме, а не в поле.

     class TagListField(Field): widget = TextInput() def _value(self): if self.data: return u', '.join(self.data) else: return u'' def process_formdata(self, valuelist): if valuelist: self.data = [x.strip() for x in valuelist[0].split(',')] else: self.data = [] class PostForm(Form): title = StringField(u'title', validators=[DataRequired()]) body = StringField(u'Text', widget=TextArea()) pub_date = DateTimeField(u'date create') topic = QuerySelectField(query_factory=enabled_topics, allow_blank=True) tags = TagListField(u'Tags') # here you use your custom field # a method to set the tags def fill_tags(self, tags): self.tags.data = tags # and from the view that is creating the form you send the list of tags 

    на ваш взгляд:

     form = PostForm() form.fill_tags([tag.name for tag in post.tags.all()]) 
    Python - лучший язык программирования в мире.