__init __ () получил неожиданный аргумент ключевого слова во время переопределения формы в CreateView - PullRequest
0 голосов
/ 07 февраля 2020

Я определил URL примерно так:

path('new_checkin/<int:room_id>',NewCheckInCreateView.as_view(),name='new_checkin'),   

И я хочу получить это room_id и инициализировать данные на основе этого room_id в шаблоне. Я использую django createview, и как я пытаюсь сделать это:

views.py

class NewCheckInCreateView(CreateView):
        template_name = 'my_template'
        model = my_model
        form_class = NewCheckInForm


        def get_form_kwargs(self):
            kwargs = super(NewCheckInCreateView, self).get_form_kwargs()
            //Here i try to update the kwargs
            kwargs.update(self.kwargs) 
            return kwargs

Для инициализации формы. Я определил ModelForm следующим образом:

class NewCheckInForm(ModelForm):
    class Meta:
        model = my_model
        fields = ['room',]

        def __init__(self, room_id=None,*args, **kwargs):
            super(NewCheckInForm, self).__init__(*args, **kwargs)
            room_obj = Room.objects.get(id=room_id)
            if room_obj:
                self.initial['room']= room_obj

Когда я запускаю этот код, я получаю следующие ошибки:

TypeError at / booking / new_checkin / 7

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

Я ищу много учебников и блогов для этого. Но ни один из приемов не сработал для меня. Почему эта ошибка возникает, я был бы рад, если бы кто-то ответил на мой вопрос.

...