Никогда не совпадает с переменной slug, работает с жестко закодированным значением

#django

#django

Вопрос:

Я обновляю некоторый код из проекта Django 1.11 до Django 2.x, и в одном шаблоне (просмотр списка контактов с помощью FK для возврата клиентам) я получаю «NoReverseMatch», поскольку он не видит значение slug в параметре URL. Если я жестко закодирую значение, оно сработает, и одна и та же переменная отобразит правильное значение для каждой записи, если я просто отобразлю в виде текста на странице.
Я не понимаю, почему переменная удаляется, но, вероятно, я сделал что-то глупое.
Это работает:

 <td class="">
<a href="{% url "clients:view" slug='sony' %}">
{{ contact.client.slug  }} 
</a>
</td>
  

Это приводит к ошибке NoReverse

 <td class="">
<a href="{% url "clients:view" slug=contact.client.slug %}">
{{ contact.client.slug  }}
</a>
</td>
  

В обоих случаях переменная {{ contact.client.slug }} возвращает правильные данные.

urls.py:

 import ...

app_name = "clients"
urlpatterns = [
    path("ajax/validate_client_code", validate_client_code, name="validate_client_code"),
    path("", ClientListView.as_view(), name="list"),
    path("new/", ClientCreateView.as_view(), name="new"),
    path("edit/<slug:slug>/", ClientUpdateView.as_view(), name="edit"),
    path("delete/<int:pk>/", ClientDeleteView.as_view(), name="delete"),
    path("<slug:slug>/", ClientDetailView.as_view(), name="view"),
]
  

Кто-нибудь может указать на мою ошибку? Должно быть что-то действительно простое, но я просто не могу этого увидеть.

Комментарии:

1. Является ли это основным urls.py в файле или внутри приложения?

2. Внутри приложения.. Main просто содержит путь include (2.x) («клиенты /», include(«iqms.core.urls.client_urls», пространство имен=»клиенты»)), path («контакты /», include(«iqms.core.urls.contact_urls», пространство имен =»контакты»)),

3. что client.contact.slug возвращает? Кроме того, как выглядит поле slug в вашем models.py ?

4. клиент.контакт. slug возвращает значение из записи, ‘sony’ в тестовой записи — то же значение. По крайней мере, когда я отображаю его в виде текста по этой ссылке или в других местах, оно не равно null. Но когда я пытаюсь передать его в качестве параметра, кажется, что одно и то же поле равно нулю. Этот синтаксис отлично работал в Django 1.11.8, где я извлек код из более старого проекта.