2016-05-26 4 views
0

Например, когда я добавлять пользовательскую видовой:Как активировать виджет дампикера в пользовательском поле формы?

class TaskModelView(ModelView): 
    pass 


flaskadmin = Admin(name='Flasky', template_mode='bootstrap3', index_view=MyAdminIndexView(), 
        base_template='admin/mymaster.html') 

flaskadmin.add_views(TaskModelView(models.Task, db.session)) 

Я также получить полезную Datepicker виджет на соответствующих DateTime полей: enter image description here

Но что о пользовательских видах и формах? Я пытался добавить вид точно так же, но в наследство от BaseView, то я создал новую форму с DateTimeField из опоки-админ и пытался сделать его:

from flask.ext.admin.form import DateTimeField, DatePickerWidget, DateTimePickerWidget 


class AssebledChartForm(Form): 
    date_from = DateTimeField('From', format='%d.%m.%Y', widget=DateTimePickerWidget()) 
    date_to = DateTimeField('To') 


class AnalyticsView(BaseView): 
<...> 
    return self.render('admin/analytic.html', form=form) 

flaskadmin.add_view(AnalyticsView(name='Analytics', endpoint='analytics')) 

но виджет не появился и на from и to полей: enter image description here

Как использовать флагов-admin datepicker на моих собственных формах?

ответ

0

Насколько я помню, вы можете использовать либо jQuery datepicker для этого, либо WTForms one, а не flask.ext.admin.form.

Форма администратора предназначена для скрытия от конечного пользователя, а публикация ее API для публичного пользователя категорически запрещена.

Был аналогичный вопрос here

И вы можете увидеть хороший пример того, как использовать WTForms DatePicker.

+0

admin.form предоставляет несколько полей для создания интерфейса администратора, а DateTimeField - один из них. Он также унаследован от WTForms DateTimeField для использования Flask-admin DataTimeWidget. Я ищу, как заставить его работать. – aryndin

0

Ваш admin/analytic.html не загружает javascript, который обрабатывает выбор дат на стороне клиента. добавьте в свой шаблон следующее:

{% block tail_js %} 
    <script src="/static/vendor/jquery.min.js" type="text/javascript">/script> 
    {# use /static/bootstrap2/js/bootstrap.min.js if you are using bootstrap2 #} 
    <script src="/static/bootstrap3/js/bootstrap.min.js" type="text/javascript"></script> 
    <script src="/static/vendor/moment.min.js" type="text/javascript"></script> 
    <script src="/static/vendor/select2/select2.min.js" type="text/javascript"></script> 
{% endblock %} 

Это должно дать вам все необходимое, чтобы все виджеты работали (Select2, DatePicker и т. Д.).

Смежные вопросы