class BookModelWidget(Block):
"""
Simple demonstration of using a :class:`~wildewidgets.Block` to
display rows in a :class:`~wildewidgets.PagedModelWidget`.
"""
#: The object to display.
object: Model | None = None
def __init__(self, object: Model | None = None, **kwargs) -> None: # noqa: A002
if object is None:
msg = "object must be provided"
raise ValueError(msg)
authors = ", ".join([x.full_name for x in object.authors.all()])
super().__init__(
Block(
f"{object.title} - {authors}", css_class="p-3 mb-1 border text-bg-light"
),
**kwargs,
)
class PagedBookWidget(PagedModelWidget):
"""
Paged demonstration of using a :class:`~wildewidgets.PagedModelWidget` to
display a list of objects.
"""
#: The model to use for the widget.
model = Book
#: The widget to use for each object.
model_widget = BookModelWidget
#: The number of objects to display per page.
paginate_by: int = 5