Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python AttributeError:“DeferredAttribute”对象没有属性“rel”_Python_Django_Rest_Wagtail - Fatal编程技术网

Python AttributeError:“DeferredAttribute”对象没有属性“rel”

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模型中的描述和图像字段有关。

我是Wagtail和Django的新手,我正在尝试构建一个模型,该模型将从RESTAPI提取数据,并将其放入一个可以在模板上迭代的对象中。但是,在尝试迁移时,出现以下错误:

    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查找此页面的用户。。。