Я хотел бы добавить кнопку в мое представление создания Flask-Admin, и после этого вопроса мне удалось это сделать.
Теперь, предположив, что модель, переданная в это представление, скажем, User
имеет:
- A отношение один ко многим с
ClassA
и ClassB
ClassA
также имеет отношение один ко многим с ClassB
И предполагая, что в моем представлении создания я добавил некоторый экземплярClassA
при создании экземпляра User
, скажем my_class_a_instance
, мне бы хотелось, чтобы эта кнопка:
- выполняет запрос к
my_class_a_instance
, возвращая все экземпляры ClassB
(илиmy_class_b_instance
s) связанный с ним в этот момент - заполняет поле
form.class_b
в шаблоне создания с этими результатами - , если возможно, появляется какое-то модальное окно, запрашивающее у пользователя подтверждение.Возможно с
@action
Пока мой подход выглядит так:
# templates/admin/cascade_button_create.html
{% extends 'admin/model/create.html' %}
{% block body %}
{% call lib.form_tag(form) %}
<div class="row">
<div class="col-xg-10">
{{ lib.render_form_fields([form.name])}}
</div>
</div>
<div class="row">
<div class="col-xg-10">
<!-- form.cities follows the attributes of sqla model -->
{{ lib.render_form_fields([form.instances_of_a])}}
</div>
<div class="col-xg-2">
<!-- so this button should query any model related to form.cities
and populate the create form with whatever comes out.
Say Street has a one to many relationship, I want this
button to run some method of the form get_instances_of_b_from_instance_of_a(form.instances_of_a) (query_method() for short) that fills
the field form.instances_of_b
If possible I would like to pop up a modal window prompting the user
to confirm this before filling this field.-->
<a href="{{ query_method() }}" class="btn btn-default">Add with cascade</a>
</div>
</div>
<div class="form-buttons">
{{ lib.render_form_buttons(return_url) }}
</div>
{% endcall %}
{% endblock %}-
Я бы зарегистрировал это представление, как сказано в документации
# admin/views.py
class CascadesView(ModelView):
create_template = 'admin/cascade_button_create.html'
Я не нашел информации по этому поводу, и в шаблонах не так много комментариев, которые могут помочь.
Спасибо!
РЕДАКТИРОВАТЬ:
Я скопировал примеры из репо flask-admin
и установил мой https://github.com/diegoquintanav/flask-admin-autopopulate для игры с