Переопределение метода get_form_kwargs () в UpdateView - PullRequest
1 голос
/ 08 июля 2019

Я бы хотел переопределить метод get_form_kwargs() в UpdateView и иметь что-то похожее на следующее:

class GroupRatingView(UpdateView):
    model = Group
    fields = ['rating']

    def get_form_kwargs(self, *args, **kwargs):
        kwargs = super(GroupRatingView, self).get_form_kwargs(*args, **kwargs)
        import ipdb; ipdb.set_trace()

Однако, если я попробую это сделать, я получу следующую ошибку:

File "/venv/lib/python2.7/site-packages/django/views/generic/edit.py" in post
  181.         form = self.get_form()

File "/venv/lib/python2.7/site-packages/django/views/generic/edit.py" in get_form
  45.         return form_class(**self.get_form_kwargs())

Exception Type: TypeError at /groups/5/rate
Exception Value: ModelFormMetaclass object argument after ** must be a mapping, not NoneType

Кажется, что self.get_form_kwargs() возвращает None, тогда как я ожидаю, что попаду в отладчик.Почему я получаю сообщение об ошибке вместо того, чтобы выполнить трассировку отладчика?

1 Ответ

3 голосов
/ 08 июля 2019

Вы забыли вернуть kwargs в конце метода; это заставляет метод возвращать None, который не является отображением, и вызывает ошибку.

Добавьте оператор return в ваш метод:

class GroupRatingView(UpdateView):
    ...

    def get_form_kwargs(self, *args, **kwargs):
        kwargs = super(GroupRatingView, self).get_form_kwargs(*args, **kwargs)
        ...
        return kwargs
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...