我尝试获取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”之后,出现错误:raise AppRegistryNotReady(“尚未加载模型。”]django.core.exceptions.AppRegistryNotReady:模型尚未加载。
所有页面都有一个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])