2014-02-05 4 views
3

Этот [пример] [1], чтобы настроить форму с WTForms и SQLAlchemy в Flask и добавить QuerySelectField в форму. Я не использую flask.ext.sqlalchemy, мой код:SQLAlchemy/WTForms: установить выбранное значение по умолчанию для QuerySelectField

ContentForm = model_form(Content, base_class=Form) 
ContentForm.author = QuerySelectField('Author', get_label="name") 
myform = ContentForm(request.form, content) 
myform.author.query = query_get_all(Authors) 

Теперь я хочу установить значение по умолчанию SelectList в QuerySelectField в.

Пробовал пройти default kwarg в QuerySelectField и установить selected атрибуты. Ничего не получилось. Мне что-то не хватает? Может кто-нибудь помочь?

ответ

4

Вы должны установить свой аргумент default ключевое слово к экземпляру Authors, что вы хотите быть по умолчанию:

# Hypothetically, let's say that the current user makes the most sense 
# This is just an example, for the sake of the thing 
user = Authors.get(current_user.id) 
ContentForm.author = QuerySelectField('Author', get_label='name', default=user) 

В качестве альтернативы, вы можете предоставить экземпляр поля на конкретизации:

# The author keyword will only be checked if 
# author is not in request.form or content 
myform = ContentForm(request.form, obj=content, author=user) 
+0

Первый метод не имеет эффекта. Второе приводит к тому, что объект 'TypeError: 'ContentForm' не является вызываемым' исключением ... – casual

+0

@casual - извините, второй должен был быть для экземпляра' myform' - обновлен. (Что касается первого, что произойдет, если вы используете 'id' автора ... Я не думаю, что он должен работать, глядя на код, но это не помешает попробовать) –

+0

Странно , единственная ситуация, когда поле выбора имеет правильное значение по умолчанию, - 'myform = ContentForm (request.form, author = user)' Но тогда, конечно, все остальные поля формы пустые. Может быть, это проблема с запросами Flask? – casual