__init __()获得了意外的关键字参数“所有者”

时间:2018-12-11 17:48:06

标签: wagtail

这是模型

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 ()获得了意外的关键字参数“所有者”

1 个答案:

答案 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 方法。