Django не может выполнить обратное сопоставление url из шаблона

У меня возникают трудности с обратным сопоставлением url, получаю ошибку:

NoReverseMatch at /patient/46cb4bd5-ef39-4697-84ff-9aa2b6e85e6b/
Reverse for 'treatment_detail' with no arguments not found. 1 pattern(s) tried: ['patient/(?P<patient_id>[^/]+)/$']

Урл:

/patient/46cb4bd5-ef39-4697-84ff-9aa2b6e85e6b/

(строка является 'apatient_id' и меняется каждый раз, когда пользователь отправляет страницу 'add')

urls.py is

app_name = "patient"
urlpatterns = [
    path(
        route='add/',
        view=views.PatientAddView.as_view(),
        name="patient_add"),
    path(
        route='<patient_id>/',
        view=views.TreatmentTemplateView.as_view(),
        name='treatment_detail'),
]

html

<form action="{% url 'patient:treatment_detail' %}" method="get">
<input type="submit" class="btn btn-primary" value="get_doc" name="get_doc">
</form>

views.py

Если у меня есть 'patient:patient_add' вместо 'patient:treatment_detail', то все работает нормально, так что проблема, похоже, в том. route="<patient_id>"/ В urls.py

Ваш url-маршрут должен включать patient_id такой, что:

path(
    route='<uuid:patient_id>/',
    view=views.TreatmentTemplateView.as_view(),
    name='treatment_detail'),

Я предполагаю, что вы используете поле uuid в вашей модели. Вы можете взглянуть на docs для получения более подробной информации.

В вашем шаблоне вы также должны передать поле uuid в тег шаблона:

"{% url 'patient:treatment_detail' patient.patient_id %}"

Вернуться на верх