Я определил 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'
Я ищу много учебников и блогов для этого. Но ни один из приемов не сработал для меня. Почему эта ошибка возникает, я был бы рад, если бы кто-то ответил на мой вопрос.