Ragtail provides Oxyde models in ragtail.models:
Locale: active languages/locales, including the default localePage: tree-structured page withparent,path,depth,localeandtranslation_keyMenu: named menu per locale, for examplemainorfooterMenuItem: nested menu entries pointing either to aPageor an external URLUser: staff users for CMS admin loginImage/Rendition: media library with focal points and renditions — see Images
After model changes, generate and apply migrations — see Installation.
Use the helper service so path, depth and translation_key are filled consistently:
from ragtail.pages import create_page, create_translation
home = await create_page(title="Home", slug="", locale=en, live=True)
about = await create_page(title="About", slug="about", parent=home, locale=en, live=True)
ueber_uns = await create_translation(about, title="Ueber uns", slug="ueber-uns", locale=de)For block-based page content (Markdown, HTML, images, custom templates), declare a StreamField on a page subclass. Values are stored in page_data as JSON. See StreamField.