Модели еще не загружены - PullRequest
0 голосов
/ 02 марта 2020

Я пытаюсь получить все страницы ProgramPage , где поле program_types имеет определенный pk Все было хорошо, прежде чем я добавил это.

program_type = ProgramType.objects.get(pk=1)   
programs = ProgramPage.objects.live().public().filter(program_types__in=[program_type])

Вот полный код models.py :

# program/models.py

from django import forms
from django.db import models

from modelcluster.fields import ParentalManyToManyField

from wagtail.core.models import Page
from wagtail.core.fields import RichTextField
from wagtail.admin.edit_handlers import FieldPanel
from wagtail.snippets.models import register_snippet


@register_snippet
class ProgramType(models.Model):
    name = models.CharField(max_length=255)

    panels = [
        FieldPanel('name'),
    ]

    def __str__(self):
        return self.name

    class Meta:
        verbose_name_plural = "Program types"


class ProgramPage(Page):
    description = RichTextField(blank=True)
    program_types = ParentalManyToManyField("program.ProgramType", blank=True)

    content_panels = Page.content_panels + [
        FieldPanel('description'),
        FieldPanel('program_types', widget=forms.CheckboxSelectMultiple),
    ]


class IndexProgram(Page):
    program_type = ProgramType.objects.get(pk=1)   
    programs = ProgramPage.objects.live().public().filter(program_types__in=[program_type])

после "makemigrations" или "runserver" я получаю ошибку:

повышение AppRegistryNotReady («Модели еще не загружены.»)

django .core.exceptions.AppRegistryNotReady: Модели еще не загружены.

1 Ответ

0 голосов
/ 02 марта 2020

На всех страницах есть метод get_context, который вызывается при каждом отображении шаблона и возвращает словарь переменных для привязки к шаблону.

class IndexProgram(Page):    
    def get_context(self, request):
        context = super().get_context(request)
        program_type = ProgramType.objects.get(pk=1)
        context['programs'] = ProgramPage.objects.live().public().filter(program_types__in=[program_type])
...