【问题标题】:Create a fake Database for testing API with wagtail使用 wagtail 创建一个用于测试 API 的假数据库
【发布时间】:2017-04-22 09:31:32
【问题描述】:
我需要针对我的 API 创建一些测试。
API 使用 wagtail 页面并为我提供它们的内容。
我正在为测试创建数据库,但我无法创建 wagtail 页面,因为我总是得到 p>
ValidationError: {'path': [u'This field cannot be blank.'], 'depth': [u'This field cannot be null.']}
我该怎么做?我必须创建从根到树的整个站点吗?
【问题讨论】:
标签:
python
django
wagtail
【解决方案1】:
depth - 这是一个嵌套级别。 ROOT页面有一级,主页面有二级,显然一级和二级只能有一个页面
path - 这是一个具体的值,我还没有理解。
ROOT 页面 (depth = 1) 有这个路径:0001,
第二个嵌套级别 (depth = 2) 的主页具有路径 00010001。
第三层嵌套的第一页 (depth = 3) 的路径为 000100010001
我不能保证我给你的建议会奏效,因为我做了很长时间,
但是如果要生成同层嵌套的假页面,只需要改变路径,最后一位加+1,深度不变。
举例:
from yourapp.models import FakePage
k = 1
for i in range(5):
k = k + 1
page = FakePage(
title = ('faketitle{}').format(k),
path = ('{0:04}').format(k)
depth = 3,
)
page.save()
但是有更好的办法:
from wagtail.wagtailcore.models import Page
from yourapp.models import FakePage
pages = Page.objects.all() # Get all pages
page = Page.objects.get(pk=3) # For example, take a page with pk = 3
fakepage = FakePage(title='fakepage title') # Create the desired page
page.add_child(instance=fakepage) # Add children page to the parrent page
在这种情况下,您无需担心深度和路径。