[英]Using PageChooserPanel as an Orderable in Settings, getting "'list' object has no attribute 'bind_to'" Attribute error
我正在嘗試在 Wagtail 中創建一個設置頁面,允許我手動選擇 1-5 個頁面,這些頁面將在我的網站上顯示為“最受歡迎的頁面”。
我在 Orderable 中使用 PageChooserPanel,但我收到了一個我不知道如何修復的屬性錯誤 - “'list' object 沒有屬性 'bind_to'”
使用的代碼如下:
from django.db import models
from wagtail.core.models import Page, Orderable
from wagtail.admin.edit_handlers import PageChooserPanel, FieldPanel, MultiFieldPanel, InlinePanel
from wagtail.contrib.settings.models import BaseSetting, register_setting
from modelcluster.fields import ParentalKey
from modelcluster.models import ClusterableModel
@register_setting
class MostPopularPosts(BaseSetting, ClusterableModel):
display_most_popular_posts_in_sidebar = models.BooleanField("Display most popular posts in sidebar", default=True, help_text='Untick to hide the most popular posts widget')
panels = [
FieldPanel('display_most_popular_posts_in_sidebar'),
InlinePanel('popular_page', max_num=5, min_num=1, label="Post"),
],
class MostPopularPostPages(Orderable):
settings_page = ParentalKey(MostPopularPosts)
popular_page = models.ForeignKey(
'wagtailcore.Page',
null=True,
blank=True,
on_delete=models.SET_NULL,
related_name='+',
verbose_name="Page Link"
)
panels = [
PageChooserPanel('popular_page'),
]
完整錯誤信息:
Internal Server Error: /admin/settings/home/mostpopularposts/2/
Traceback (most recent call last):
File "C:\Users\willr\repos\mapbox\env\lib\site-packages\django\core\handlers\exception.py", line 47, in inner
response = get_response(request)
File "C:\Users\willr\repos\mapbox\env\lib\site-packages\django\core\handlers\base.py", line 181, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Users\willr\repos\mapbox\env\lib\site-packages\django\views\decorators\cache.py", line 44, in _wrapped_view_func
response = view_func(request, *args, **kwargs)
File "C:\Users\willr\repos\mapbox\env\lib\site-packages\wagtail\admin\urls\__init__.py", line 127, in wrapper
return view_func(request, *args, **kwargs)
File "C:\Users\willr\repos\mapbox\env\lib\site-packages\wagtail\admin\auth.py", line 172, in decorated_view
response = view_func(request, *args, **kwargs)
File "C:\Users\willr\repos\mapbox\env\lib\site-packages\wagtail\contrib\settings\views.py", line 61, in edit
edit_handler = get_setting_edit_handler(model)
File "C:\Users\willr\repos\mapbox\env\lib\site-packages\wagtail\contrib\settings\views.py", line 38, in get_setting_edit_handler
return edit_handler.bind_to(model=model)
File "C:\Users\willr\repos\mapbox\env\lib\site-packages\wagtail\admin\edit_handlers.py", line 146, in bind_to
new.on_model_bound()
File "C:\Users\willr\repos\mapbox\env\lib\site-packages\wagtail\admin\edit_handlers.py", line 284, in on_model_bound
self.children = [child.bind_to(model=self.model)
File "C:\Users\willr\repos\mapbox\env\lib\site-packages\wagtail\admin\edit_handlers.py", line 284, in <listcomp>
self.children = [child.bind_to(model=self.model)
AttributeError: 'list' object has no attribute 'bind_to'
我正在使用:鶺鴒 2.12、Django 3.1.6、Python 3.8.7、
對此的任何幫助將不勝感激。
您在第一個panels
定義中有一個尾隨逗號:
panels = [
FieldPanel('display_most_popular_posts_in_sidebar'),
InlinePanel('popular_page', max_num=5, min_num=1, label="Post"),
],
(這導致 Python 將其解釋為嵌套列表而不是平面列表,這意味着當它遍歷面板定義時,它得到的是列表 object 而不是面板 object。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.