TreeModelAdmin for Wagtail
Project description
Wagtail-TreeModelAdmin
Wagtail-TreeModelAdmin is an extension for Wagtail's 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
Dependencies
- Python 3.8+
- Django 3.2 (LTS), 4.1 (current)
- Wagtail 4.2+,<5.2
It should be compatible with all intermediate versions, as well. If you find that it is not, please file an issue.
Installation
- Install wagtail-treemodeladmin:
pip install wagtail-treemodeladmin
- Add
treemodeladmin
(andwagtail.contrib.modeladmin
if it's not already) as an installed app in your Djangosettings.py
:
INSTALLED_APPS = (
...
'wagtail.contrib.modeladmin',
'treemodeladmin',
...
)
Concepts
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's ModelAdmin. It is intended to be used exactly like ModelAdmin
.
Usage
Quickstart
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.contrib.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 = BookModelAdmin
Then 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.
API
Wagtail-TreeModelAdmin uses three new attributes on ModelAdmin subclasses to express parent/child relationships:
parent_field
: The name of the DjangoForeignKey
on a child model.child_field
: Therelated_name
on 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_register
ed TreeModelAdmin
subclass) should only include child_*
fields.
Getting help
Please add issues to the issue tracker.
Getting involved
General instructions on how to contribute can be found in CONTRIBUTING.
Licensing
Credits and references
- Forked from cfgov-refresh
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file wagtail-treemodeladmin-1.8.0.tar.gz
.
File metadata
- Download URL: wagtail-treemodeladmin-1.8.0.tar.gz
- Upload date:
- Size: 17.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 73936c7d15e791941fde55c36d680f9dfd6d98c15bd0f4ca162804512463d877 |
|
MD5 | 0575eab7facdd7a2528585d5bc11f314 |
|
BLAKE2b-256 | 11ea9c5eef5fbdbd03a8e18baff53e9c5ee4d97116a9e585f106aee6d768b8af |
Provenance
File details
Details for the file wagtail_treemodeladmin-1.8.0-py3-none-any.whl
.
File metadata
- Download URL: wagtail_treemodeladmin-1.8.0-py3-none-any.whl
- Upload date:
- Size: 20.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 27eac36bd599654c9f60b6b5f837ea189727b4ff21d782f318920414c9a9a7fd |
|
MD5 | 6d024b08069a415a27546e3b0a584955 |
|
BLAKE2b-256 | cd49d377895b17324f5a7c67354f99685bdb003ab5e8abcee7ad1c2cd957ad08 |