This is the official documentation of the forestadmin-agent-django and forestadmin-agent-flask Python agents.
After doing the quick start, you should have a development project which is up and running and connected to your main data storage system.
However, you can plug as many data sources as you want into the same agent.
What can I connect to?
Forest Admin collections map to any of those concepts:
ORM models
Endpoints on SaaS providers (by writing a custom data source)
Endpoints on your own API (by writing a custom data source)
Example
Flask / SQLAlchemy
In this example, we import collections from SQLAlchemy ORM.
from flask import Flaskfrom sqlalchemy.orm import declarative_basefrom forestadmin.flask_agent.agent import create_agentfrom forestadmin.datasource_sqlalchemy.datasource import SqlAlchemyDatasourceapp =Flask(__name__)Base =declarative_base(engine)# ...agent =create_agent(app)# db_uri parameter is optional, but if the agent can't find# an engine in your Base class you have to set itagent.add_datasource(SqlAlchemyDatasource(Base, db_uri='sqlite:///path/to/db.sql'))
from flask_sqlalchemy import SQLAlchemyfrom flask import Flaskfrom forestadmin.flask_agent.agent import create_agentfrom forestadmin.datasource_sqlalchemy.datasource import SqlAlchemyDatasourceapp =Flask(__name__)db =SQLAlchemy()# ...agent =create_agent(app)# with app_context you don't have to specify the db_uri parameterwith app.app_context():# db.init_app(app) agent.add_datasource(SqlAlchemyDatasource(db))
Django
With the Django agent, the Django datasource is automatically added. If you prefer to add the datasource manually you have to:
In project/settings.py set FOREST_AUTO_ADD_DJANGO_DATASOURCE = False to not auto add it
Add a customization function
Reference the customization function in project/settings.py
Add the datasource in the customization function FOREST_CUSTOMIZE_FUNCTION="path.to.custom.function"
FOREST_AUTO_ADD_DJANGO_DATASOURCE =FalseFOREST_CUSTOMIZE_FUNCTION ="my_app.forest_admin.customize_forest"# you can also directly pass a functionfrom my_app.forest_admin import customize_forestFOREST_CUSTOMIZE_FUNCTION = customize_forest
from forestadmin.django_agent.agent import DjangoAgentfrom forestadmin.datasource_django.datasource import DjangoDatasourcedefcustomize_forest(agent: DjangoAgent): agent.add_datasource(DjangoDatasource())