Flask-Admin is a powerful extension for Flask that helps you create administrative interfaces for your web applications. When working with Flask-Admin, you can indeed create hyperlink relationships between model views, allowing you to navigate from one model view to another.
To create hyperlinks from one model view to another in Flask-Admin, you typically use the column_editable_list attribute in your model view classes. Here's an example of how to set up hyperlink relationships between model views:
Suppose you have two models, Author and Book, and you want to create a hyperlink from the Author model view to the Book model view to show all the books by that author.
from flask_sqlalchemy import SQLAlchemy db = SQLAlchemy() class Author(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(255)) class Book(db.Model): id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(255)) author_id = db.Column(db.Integer, db.ForeignKey('author.id')) author = db.relationship('Author', backref='books') Author and Book using Flask-Admin:from flask_admin.contrib.sqla import ModelView from flask_admin import Admin admin = Admin(app, name='My Admin', template_mode='bootstrap3') class AuthorView(ModelView): column_editable_list = ('name', 'books') # Add 'books' column as editable # Other view customization options class BookView(ModelView): column_editable_list = ('title', 'author') # Add 'author' column as editable # Other view customization options admin.add_view(AuthorView(Author, db.session)) admin.add_view(BookView(Book, db.session)) In this example:
We define two models, Author and Book, with a one-to-many relationship between them. An Author can have multiple books.
We create two model views, AuthorView and BookView, using Flask-Admin's ModelView. We specify the column_editable_list attribute to make certain columns editable in the list view. Here, we make the books column in the AuthorView and the author column in the BookView editable.
By making the books column editable in the AuthorView, Flask-Admin will render it as a hyperlink. Clicking on the hyperlink will take you to the list of books for that author in the BookView.
This way, you create a hyperlink relationship from the Author model view to the Book model view in Flask-Admin. You can customize the views further based on your specific requirements.
"Creating hyperlinks between Flask-Admin model views"
from flask_admin.contrib.sqla import ModelView from flask_admin.model.template import macro class MyModelView(ModelView): column_formatters = { 'related_model': lambda v, c, m, p: f'<a href="/admin/related_model/{m.related_model_id}">{m.related_model.name}</a>' } "How to make model views in Flask-Admin clickable to other views?"
from flask_admin.contrib.sqla import ModelView class MyModelView(ModelView): column_list = ('id', 'name', 'related_model_link') def _related_model_link(view, context, model, name): return f'<a href="/admin/related_model/{model.related_model_id}">Link</a>' column_formatters = { 'related_model_link': _related_model_link } "Creating hyperlinks between Flask-Admin views for related models"
from flask_admin.contrib.sqla import ModelView from flask_admin.model.template import macro class MyModelView(ModelView): column_formatters = { 'related_model': lambda v, c, m, p: macro('model_link', model=m.related_model, id=m.related_model_id) } "Linking Flask-Admin model views to other views"
from flask_admin.contrib.sqla import ModelView from flask_admin.helpers import get_url class MyModelView(ModelView): column_formatters = { 'related_model': lambda v, c, m, p: f'<a href="{get_url(".related_model_view", id=m.related_model_id)}">{m.related_model.name}</a>' } get_url()."Flask-Admin: Creating hyperlinks between model views"
from flask_admin.contrib.sqla import ModelView from flask_admin.model import filters class MyModelView(ModelView): column_filters = [ filters.FilterRelated(model=RelatedModel, name='related_model', options=(('id', 'ID'), ('name', 'Name'))) ] "Flask-Admin: Making model views clickable to other views"
from flask_admin.contrib.sqla import ModelView class MyModelView(ModelView): column_formatters = { 'related_model': lambda v, c, m, p: f'<a href="/admin/related_model/{m.related_model_id}">{m.related_model.name}</a>' } "How to create hyperlinks between Flask-Admin model views?"
from flask_admin.contrib.sqla import ModelView from flask_admin.model.template import macro class MyModelView(ModelView): column_formatters = { 'related_model': lambda v, c, m, p: macro('model_link', model=m.related_model, id=m.related_model_id) } "Creating hyperlinks between related model views in Flask-Admin"
from flask_admin.contrib.sqla import ModelView from flask_admin.model import filters class MyModelView(ModelView): column_filters = [ filters.FilterRelated(model=RelatedModel, name='related_model', options=(('id', 'ID'), ('name', 'Name'))) ] "Flask-Admin: Hyperlinking model views to other views"
from flask_admin.contrib.sqla import ModelView from flask_admin.helpers import get_url class MyModelView(ModelView): column_formatters = { 'related_model': lambda v, c, m, p: f'<a href="{get_url(".related_model_view", id=m.related_model_id)}">{m.related_model.name}</a>' } get_url()."Making model views in Flask-Admin hyperlinked to other views"
from flask_admin.contrib.sqla import ModelView class MyModelView(ModelView): column_formatters = { 'related_model': lambda v, c, m, p: f'<a href="/admin/related_model/{m.related_model_id}">{m.related_model.name}</a>' } spring-boot-actuator window-soft-input-mode nimbus quoting lasagne persistence conv-neural-network boto3 wc android-design-library