这是模型
class CoursePage(Page):
"""docstring for Course"""
name=RichTextField(null=False)
categories = ParentalManyToManyField('it.ItCourseCategory', blank=True)
description=StreamField([
('heading', blocks.CharBlock()),
('paragraph', blocks.RichTextBlock()),
('image', ImageChooserBlock()),
])
icon= models.ForeignKey(
'wagtailimages.Image', null=True, blank=True,
on_delete=models.SET_NULL, related_name='+'
)
def __init__(self, arg):
super(Course, self).__init__()
self.arg = name
content_panels=Page.content_panels + [
FieldPanel('name'),
StreamFieldPanel('description'),
ImageChooserPanel('icon'),
FieldPanel('categories', widget=forms.CheckboxSelectMultiple),
]
我明白了
TypeError在/ admin / pages / add / it / coursepage / 10 /
init ()获得了意外的关键字参数“所有者”
答案 0 :(得分:3)
您应该忽略__init__
方法。
您似乎在尝试提供一种在创建页面时传递name
字段的方法,但是Django已经在Page
等模型上提供了此功能:
my_course_page = CoursePage(name='<p>My course name</p>')
(有关更多示例,请参见the Django tutorial。)如果选择覆盖__init__
方法,则需要对其进行定义以接受所有参数和关键字参数,并将其传递给{{1} },这样内置的行为就不会中断:
super
但是,在这种情况下,您根本不需要def __init__(self, *args, **kwargs):
super(CoursePage, self).__init__(*args, **kwargs)
# add your own code here
方法。