Загрузка начальных страниц при переносе данных (трясогузка) - PullRequest
0 голосов
/ 09 октября 2018

Я новичок в 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...