Python AttributeError:“DeferredAttribute”对象没有属性“rel”
我是Wagtail和Django的新手,我正在尝试构建一个模型,该模型将从RESTAPI提取数据,并将其放入一个可以在模板上迭代的对象中。但是,在尝试迁移时,出现以下错误:Python AttributeError:“DeferredAttribute”对象没有属性“rel”,python,django,rest,wagtail,Python,Django,Rest,Wagtail,我是Wagtail和Django的新手,我正在尝试构建一个模型,该模型将从RESTAPI提取数据,并将其放入一个可以在模板上迭代的对象中。但是,在尝试迁移时,出现以下错误: related = getattr(model, self.relation_name).rel AttributeError: 'DeferredAttribute' object has no attribute 'rel' 从我目前收集到的信息来看,它与OFSLowgWebPage模型中的描述和图像字段有关。
related = getattr(model, self.relation_name).rel
AttributeError: 'DeferredAttribute' object has no attribute 'rel'
从我目前收集到的信息来看,它与OFSLowgWebPage模型中的描述和图像字段有关。以下是相关模型:
from __future__ import absolute_import, unicode_literals
from django.db import models
from django.shortcuts import render
from django.conf import settings
from wagtail.wagtailcore.models import Page, Orderable
from wagtail.wagtailcore.fields import RichTextField, StreamField
from wagtail.wagtailadmin.edit_handlers import FieldPanel, FieldRowPanel, MultiFieldPanel, \
InlinePanel, StreamFieldPanel
from wagtail.wagtailimages.edit_handlers import ImageChooserPanel
from wagtail.wagtailsearch import index
from wagtail.wagtailcore.blocks import StructBlock, StreamBlock, CharBlock, RichTextBlock, RawHTMLBlock, BooleanBlock
from wagtail.wagtailimages.blocks import ImageChooserBlock
from wagtail.wagtaildocs.blocks import DocumentChooserBlock
from modelcluster.fields import ParentalKey
import datetime
import json
import requests
class OFSLOrgWebPage(Page):
description = RichTextField(blank=True)
image = models.ForeignKey(
'serenity.Images',
null=True,
blank=True,
on_delete=models.SET_NULL,
related_name='+',
help_text="Council image that appears at the top of the page. Size: 500px x 400px"
)
def get_context(self, request):
context = super(OFSLOrgWebPage, self).get_context(request)
context['greek_orgs'] = self.greek_bios.objects.child_of(self).live()
return context
search_fields = Page.search_fields + [
index.SearchField('description'),
index.SearchField('greek_orgs'),
]
content_panels = Page.content_panels + [
InlinePanel('description', label='Council Description'),
InlinePanel('image', label='Council Image'),
InlinePanel('greek_bios'),
]
template = '../templates/ofsl_site/ofsl_org_web_page.html'
class Meta:
verbose_name = "OFSL Greek Org Page"
class OFSLGreekBio(Orderable):
name = models.CharField(max_length=255, blank=True)
letters = models.CharField(blank=True, max_length=3)
group_id = models.CharField(max_length=255, blank=True)
page = ParentalKey(OFSLOrgWebPage, related_name='greek_bios')
def get_groups(self):
response = requests.get(
('{}/api/v1/groups-search/?legacy_group_id={}?format=json').format(
settings['API_BASE_URL'],
int(self.group_id)))
if response.status_code != 200:
return ''
return response.json()['objects']
panels = [
FieldPanel('name'),
FieldPanel('letters'),
FieldPanel('group_id'),
]
class Meta:
verbose_name = "Greek Organization"
verbose_name_plural = "Greek Organizations"
编辑:我正在运行Django 1.11.4和Wagtail 1.13.1您使用的Django 2.0版本的Wagtail不支持它-支持Django 2.0的Wagtail的第一个版本将是Wagtail 2.0,目前处于测试阶段 您需要降级到Django 1.11.x,或者。您的内容面板定义使用了错误的面板类型进行描述和图像-InlinePanel仅用于子对象关系,如希腊bios。您可能希望这样:
content_panels = Page.content_panels + [
FieldPanel('description'),
ImageChooserPanel('image'),
InlinePanel('greek_bios'),
]
感谢您的回复,但我实际上正在运行Django 1.11.4和Wagtail 1.13.1Ah,对不起!碰巧,这个错误与使用不匹配的Django和Wagtail版本时得到的错误非常相似,所以我将保留这个答案,以方便通过Google查找此页面的用户。。。