Wagtail-TreeModelAdmin is an extension for Wagtail's wagtail-modeladmin that allows for a page explorer-like navigation of Django model relationships within the Wagtail admin.
- Dependencies
- Installation
- Concepts
- Usage
- API
- Getting help
- Getting involved
- Licensing
- Credits and references
- Python 3.8+
- Django 3.2 (LTS), 4.1 (current)
- Wagtail 5.1+
- wagtail-modeladmin
It should be compatible with all intermediate versions, as well. If you find that it is not, please file an issue.
- Install wagtail-treemodeladmin:
pip install wagtail-treemodeladmin- Add
treemodeladmin(andwagtail_modeladminif it's not already) as an installed app in your Djangosettings.py:
INSTALLED_APPS = (
...
'wagtail_modeladmin',
'treemodeladmin',
...
)Wagtail-TreeModelAdmin allows for a Wagtail page explorer-like navigation of Django one-to-many relationships within the Wagtail admin. In doing this, it conceptualizes the Django ForeignKey relationship as one of parents-to-children. The parent is the destination to of the ForeignKey relationship, the child is the source of the relationship.
Wagtail-TreeModelAdmin is an extension of wagtail-modeladmin. It is intended to be used exactly like ModelAdmin.
To use Wagtail-TreeModelAdmin you first need to define some models that will be exposed in the Wagtail Admin.
# libraryapp/models.py
from django.db import models
class Author(models.Model):
name = models.CharField(max_length=255)
class Book(models.Model):
author = models.ForeignKey(Author, on_delete=models.PROTECT)
title = models.CharField(max_length=255)Then create the TreeModelAdmin subclasses and register the root the tree using modeladmin_register:
# libraryapp/wagtail_hooks.py
from wagtail_modeladmin.options import modeladmin_register
from treemodeladmin.options import TreeModelAdmin
from libraryapp.models import Author, Book
class BookModelAdmin(TreeModelAdmin):
model = Book
parent_field = 'author'
@modeladmin_register
class AuthorModelAdmin(TreeModelAdmin):
menu_label = 'Library'
menu_icon = 'list-ul'
model = Author
child_field = 'book_set'
child_model_admin = BookModelAdminThen visit the Wagtail admin. Library will be in the menu, and will give you a list of authors, and each author will have a link that will take you to their books.
Wagtail-TreeModelAdmin uses three new attributes on ModelAdmin subclasses to express parent/child relationships:
parent_field: The name of the DjangoForeignKeyon a child model.child_field: Therelated_nameon a DjangoForeignKey.child_model_admin
Any TreeModelAdmin subclass can specify both parent and child relationships. The root of the tree (either the TreeModelAdmin included in a ModelAdminGroup or the @modeladmin_registered TreeModelAdmin subclass) should only include child_* fields.
Please add issues to the issue tracker.
General instructions on how to contribute can be found in CONTRIBUTING.
- Forked from cfgov-refresh
