A plugin for Wagtail that provides a ModelChooserPanel
and ModelChooserBlock
for arbitrary models.
Install using pip:
pip install wagtail-modelchooser
Then add it to your INSTALLED_APPS
:
It works with Wagtail 1.4 and upwards.
To enable the chooser for your model, you must register the model. For simple cases, decorate your model with @register_model_chooser
:
You can then use either ModelChooserPanel
in an edit handler definition, or ModelChooserBlock
in a StreamField
definition:
from wagtail.wagtailcore.blocks import RichTextBlock
from wagtail.wagtailcore.fields import StreamField
from wagtail.wagtailcore.models import Page
from wagtail.wagtailadmin.edit_handlers import FieldPanel, StreamFieldPanel
from wagtailmodelchooser.blocks import ModelChooserBlock
from wagtailmodelchooser.edit_handlers import ModelChooserPanel
class Book(Page):
name = models.CharField(max_length=255)
author = models.ForeignKey(Author)
content_panels = [
FieldPanel('name'),
ModelChooserPanel('author'),
]
class ContentPage(Page):
body = StreamField([
('text', RichTextBlock()),
('author', ModelChooserBlock('books.Author')),
])
content_panels = [
StreamFieldPanel('body'),
]