Объект wagtail 'NoneType' не имеет атрибута 'model'
Я установил свежий wagtail, когда я пытаюсь создать страницу, я получаю ошибку :
'NoneType' object has no attribute 'model'
Мой класс :
class CategoryPage(Page):
description_meta = models.CharField(max_length=500, null=True, blank=True)
template = models.CharField(max_length=500, null=True, blank=True, default='_nixaTemplate/category/default.html')
image = models.ImageField(_("Image"), upload_to="img/category/", blank=True, null=True)
display = models.BooleanField(_("Display Post"), default=False )
content_panels = Page.content_panels + [
FieldRowPanel([
FieldPanel("description_meta", classname="col-12 col12"),
FieldPanel("template", classname="col-12 col12"),
ImageChooserPanel("image", classname="full"),
]),
]
когда я пытаюсь создать страницу категории, я получаю сообщение
ImageChooserPanel нужно использовать с ForeignKey к модели Image, а не с ImageField. Это связано с тем, что тип поля Django ImageField обеспечивает обычную загрузку файлов, а в Wagtail изображения являются самостоятельными объектами базы данных, которые можно использовать повторно, давать им названия, организовывать в коллекции и т.д.
class CategoryPage(Page):
description_meta = models.CharField(max_length=500, null=True, blank=True)
template = models.CharField(max_length=500, null=True, blank=True, default='_nixaTemplate/category/default.html')
image = models.ForeignKey(("wagtailimages.Image"), blank=True, null=True, on_delete=models.SET_NULL)
display = models.BooleanField(_("Display Post"), default=False )
content_panels = Page.content_panels + [
FieldRowPanel([
FieldPanel("description_meta", classname="col-12 col12"),
FieldPanel("template", classname="col-12 col12"),
ImageChooserPanel("image", classname="full"),
]),
]
В качестве альтернативы, если вам нужно обычное поле загрузки файла, вы можете использовать FieldPanel вместо ImageChooserPanel, но тогда изображения будут существовать вне библиотеки изображений Wagtail, и стандартные функции изображений (такие как тег шаблона {% image %}) не будут использоваться для них.