一、page类
位于wagtail.core.models.py下面。
class Page(AbstractPage, index.Indexed, ClusterableModel, metaclass=PageBase):
title = models.CharField(
verbose_name=_('title'),
max_length=255,
help_text=_("The page title as you'd like it to be seen by the public")
)
# to reflect title of a current draft in the admin UI
draft_title = models.CharField(
max_length=255,
editable=False
)
slug = models.SlugField(
verbose_name=_('slug'),
allow_unicode=True,
max_length=255,
help_text=_("The name of the page as it will appear in URLs e.g http://domain.com/blog/[my-slug]/")
)
content_type = models.ForeignKey(
ContentType,
verbose_name=_('content type'),
related_name='pages',
on_delete=models.SET(get_default_page_content_type)
)
live = models.BooleanField(verbose_name=_('live'), default=True, editable=False)
has_unpublished_changes = models.BooleanField(
verbose_name=_('has unpublished changes'),
default=False,
editable=False
)
url_path = models.TextField(verbose_name=_('URL path'), blank=True, editable=False)
owner = models.ForeignKey(
settings.AUTH_USER_MODEL,
verbose_name=_('owner'),
null=True,
blank=True,
editable=True,
on_delete=models.SET_NULL,
related_name='owned_pages'
)
seo_title = models.CharField(
verbose_name=_("page title"),
max_length=255,
blank=True,
help_text=_("Optional. 'Search Engine Friendly' title. This will appear at the top of the browser window.")
)
show_in_menus_default = False
show_in_menus = models.BooleanField(
verbose_name=_('show in menus'),
default=False,
help_text=_("Whether a link to this page will appear in automatically generated menus")
)
search_description = models.TextField(verbose_name=_('search description'), blank=True)
go_live_at = models.DateTimeField(
verbose_name=_("go live date/time"),
blank=True,
null=True
)
expire_at = models.DateTimeField(
verbose_name=_("expiry date/time"),
blank=True,
null=True
)
expired = models.BooleanField(verbose_name=_('expired'), default=False, editable=False)
locked = models.BooleanField(verbose_name=_('locked'), default=False, editable=False)
locked_at = models.DateTimeField(verbose_name=_('locked at'), null=True, editable=False)
locked_by = models.ForeignKey(
settings.AUTH_USER_MODEL,
verbose_name=_('locked by'),
null=True,
blank=True,
editable=False,
on_delete=models.SET_NULL,
related_name='locked_pages'
)
二、通过python添加页面
(一)在django的项目中新建一个DB_tools的文件夹,再在文件夹中建立一个import_da.py的文件,首先加入以下代码。
import sys
import os
script_dir = os.path.split(os.path.realpath(__file__))[0] # 获取脚本所在的目录
prj_dir = os.path.dirname(script_dir) # 获取其上级目录,及django项目所在的目录。
sys.path.append(prj_dir) # 在python系统路径中加入上一步得到的目录。
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings.dev") # 设置DJANGO_SETTINGS_MODULE变量。cpsite即settings.py所在的文件夹名称
import django
django.setup()
from wagtail.core.models import Page
from blog.models import BlogPage
parent_page = Page.objects.get(title='index02').specific
news_page = BlogPage(
title = 'title test 07',
slug = 'title_test_07',
body='Something pleasant to hear.',
intro="desc",
)
parent_page.add_child(instance=news_page)
#news_page.save()
news_page.save_revision().publish()
(二)经测试可用,可是无法添加tags,即使在代码中加上tags,发布后也没有tags。
(三)slug不能相同,文章的标题可以相同。
三、tags
(一)看看它的数据表。

(二)添加tags
如果要实现添加tags,只需要在数据库中插入“content_object_id”和"tag_id"即可。
