__init __ () получил неожиданный аргумент ключевого слова «владелец» - PullRequest
0 голосов
/ 11 декабря 2018

вот модель

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),

    ]

Я получил это

Ошибка типа в / admin / pages / add / it / coursepage / 10 /
init () получил неожиданный аргумент ключевого слова «владелец»

1 Ответ

0 голосов
/ 11 декабря 2018

Вы должны опустить метод __init__.

Похоже, вы пытаетесь предоставить способ пропустить поле name при создании страницы, но Django уже предоставляет эту возможность на моделяхнапример, Page:

my_course_page = CoursePage(name='<p>My course name</p>')

(см. учебник Django для дальнейших примеров.) Если вы решите переопределить метод __init__, вам нужно определить его, чтобы он принимал всеаргументы и ключевые слова аргументы и передайте их super, чтобы это встроенное поведение не нарушалось:

def __init__(self, *args, **kwargs):
    super(CoursePage, self).__init__(*args, **kwargs)
    # add your own code here

Однако в этом случае вам не нужен метод __init__на все.

...