Понимание наследования в Джанго - PullRequest
0 голосов
/ 26 октября 2019

Я пытаюсь понять некоторые основы наследования django - я уверен, что это что-то тривиальное, но я просто не могу его получить.

У меня есть CartItemForm (forms.ModelForm) иЯ переопределяю init метод для получения пользователя из post.request, например:

def __init__(self, *args, **kwargs):
    self.request = kwargs.pop('request', None)
    super().__init__(*args, **kwargs)

И это работает, но я не понимаю, почему он не работает, когда я наследуюСначала метод init:

def __init__(self, *args, **kwargs):
    super().__init__(*args, **kwargs)
    self.request = kwargs.pop('request', None)

init () получил неожиданный аргумент ключевого слова 'request'

Что мне здесь не хватает?

1 Ответ

3 голосов
/ 26 октября 2019

Это не работает, потому что базовый класс использует явный список аргументов ключевых слов, а request не является одним из них

def __init__(self, data=None, files=None, auto_id='id_%s', prefix=None,
                 initial=None, error_class=ErrorList, label_suffix=None,
                 empty_permitted=False, instance=None, use_required_attribute=None,
                 renderer=None):

Для полноты картины это работаетперед вами, потому что вы pop определяете ключевое слово запроса из словаря ключевых слов и больше не существует при вызове super

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...