Доступ к параметрам 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}
Вернуться на верх