Доступ к параметрам url тега django template url в классе createView
Я хочу предварительно заполнить (инициализировать) определенное поле формы в классе django createView в соответствии с параметром url, переданным в теге {% url %}. Я не знаю, как выбрать переданный параметр url в методе get_initial(self) класса createView. Когда я жестко кодирую определенное значение, это работает.
html выглядит следующим образом:
{% for object in model.objects_set.all %}
{% subobject in objectmodel.subobjects_set.all%}
<a href="{% url 'url_name' object.id %}">Create SubObject</a>
{% endfor %}
{% endfor %}
а views.py выглядит так (я пропустил часть ???):
class SubObjectCreateView(generic.CreateView):
model = SubObject
...
def get_initial(self):
return {'object': ???}
urls.py выглядит следующим образом:
path('subobject/<int:something>', views.SubObjectCreateView.as_view(), name='url_name')
Параметры url доступны через свойство kwargs
, поэтому вы можете написать:
class SubObjectCreateView(generic.CreateView):
model = SubObject
...
def get_initial(self):
return {'object': self.kwargs['something']} # Replace 'something' with the name of the url parameter
Вы можете получить доступ к параметрам url с помощью
print(self.kwargs)
Итак, я рекомендую вам просто распечатать self.kwargs и посмотреть, что у вас есть.
После этого вы можете использовать этот kwargs следующим образом
class SubObjectCreateView(generic.CreateView):
model = SubObject
...
def get_initial(self):
my_param = self.kwargs["something"]
return {'object': my_param}