Я новичок в Django и Wagtail и пытаюсь настроить мою CMS на загрузку с минимальным набором страниц, чтобы наша навигация работала правильно.Короткая проблема заключается в том, что объекты, расширяющие тип Wagtail Page
, не загружаются, хотя миграция данных, похоже, удалась.
В моем случае у меня есть куча Organization
s & OrganizationType
s (расширение BasicObject
), а также некоторые Page
объекты: OrganizationIndexPage
s OrganizationPage
s.Я сбросил данные, используя стандартную команду dumpdata
, и поместил их, включая все страницы, в файл initial_data.json и загружаю их, используя миграцию данных, аналогичную принятому ответу здесь .Проблема в том, что я получаю все свои Organizations и OrganizationTypes, но не имею объектов Page после повторной миграции.Я даже добавил некоторые выходные данные для проверки:
loaded <DeserializedObject: orgs.Organization(pk=19)>
loaded <DeserializedObject: orgs.Organization(pk=20)>
loaded <DeserializedObject: orgs.OrganizationType(pk=1)>
loaded <DeserializedObject: orgs.OrganizationType(pk=2)>
loaded <DeserializedObject: orgs.OrganizationType(pk=3)>
loaded <DeserializedObject: orgs.OrganizationPage(pk=7)>
loaded <DeserializedObject: orgs.OrganizationPage(pk=8)>
loaded <DeserializedObject: orgs.OrganizationPage(pk=10)>
edit: Я заметил, что в моем дампе json некоторые поля, которые, вероятно, требуются, отсутствуют на моих страницах.Я просто звоню save()
на мои десериализованные объекты json. Однако , если я попаду в базу данных, эти недостающие строки будут там - я даже не смогу создать новую страницу для организации в интерфейсе трясогузки до отношения OneToOneField
... но они этого не делаютпоявляется в интерфейсе или в оболочке, используя OrganizationPage.objects.all()
(я новичок во всем, поэтому, возможно, тоже не использую оболочку).
Вот пример исходного json и соответствующей модели страницы:
# Example json
{
"model": "orgs.organizationpage",
"pk": 21,
"fields": {
"org": 14,
"body": "[{\"type\": \"paragraph\", \"value\": \"<p>Here is the body</p>\", \"id\": \"804642df-31f8-4e17-b114-cb05c4b3e265\"}]"
}
},
# Page class
class OrganizationPage(Page):
org = models.OneToOneField('orgs.Organization', on_delete=models.PROTECT)
body = StreamField([
('heading', HeadingBlock(classname="full title")),
('paragraph', blocks.RichTextBlock()),
('image', ImageChooserBlock()),
('table', TableBlock()),
])
api_fields = [
APIField('org'),
APIField('body'),
]
content_panels = Page.content_panels + [
StreamFieldPanel('body'),
]
search_fields = Page.search_fields + [
SearchField('body'),
]
settings_panels = Page.settings_panels + [
FieldPanel('org'),
]
# load_fixture function from migration
def load_fixture(apps, schema_editor):
fixture_file = os.path.join(fixture_dir, fixture_filename)
fixture = open(fixture_file, 'rb')
objects = serializers.deserialize('json', fixture, ignorenonexistent=True)
for obj in objects:
obj.save()
print("loaded {}".format(obj))
fixture.close()