Я пытаюсь создать CRUD проект в Django. Я успешно связался с базой данных в MS SQL SERVER, также успешно выполнил миграцию с моей моделью. Теперь, когда я пытался я показать список данных в веб-страницы У меня есть следующий ОШИБКА:uniqueidentifier как аргумент в url | django
NoReverseMatch
реверса 'extraction_edit' с аргументами '(' A4A49247-B940-450C-8E1E-2F8148CB0933 ',)' и аргументы ключевого слова '{}' не найдены. 1 образец (ы) попытался:
['crud/edit/(?P<pk>\\d+)$']
и показывает, что что-то неправильно в моем шаблоне:
<a href="{% url 'crud:extraction_edit' extraction.id_extraction %}">edit</a>
<a href="{% url 'crud:extraction_delete' extraction.id_extraction %}">delete</a>
Может кто-то помочь мне решить эту проблему ?!
urls.py
urlpatterns = (
url(r'^edit/(?P<pk>\d+)$', views.ExtractionUpdate.as_view(), name='extraction_edit'),
url(r'^delete/(?P<pk>\d+)$', views.ExtractionDelete.as_view(), name='extraction_delete'),
)
extraction_list.html
<h1>Extractions list</h1>
<ul>
{% for extraction in object_list %}
<li>ExtractionID-{{ extraction.id_extraction }} Date-{{ extraction.name_extraction }}
<a href="{% url 'crud:extraction_edit' extraction.id_extraction %}">edit</a>
<a href="{% url 'crud:extraction_delete' extraction.id_extraction %}">delete</a>
</li>
{% endfor %}
</ul>
<a href="{% url 'crud:extraction_new' %}">New</a>
models.py
class Extraction(models.Model):
id_extraction = models.CharField(db_column='ID_Extraction', max_length=36, primary_key=True)
name_extraction = models.CharField(db_column='Name_Extraction', max_length=150, blank=True, null=True)
class Meta:
managed = False
db_table = 'Extraction'
EDIT
:
model.py
def get_edit_url(self):
return reverse('extraction_edit', kwargs={'pk': self.id_extraction})
urls.py
<a href="{% url 'crud:extraction_edit' extraction.get_edit_url %}">EDIT</a>
Ну, я переписываю, как вы сказали, но, к сожалению, у меня такая же ошибка, только с небольшими различиями. Django.urls.exceptions.NoReverseMatch: Reverse для 'extract_edit' с аргументами '()' и ключевыми словами '{' pk ':' A4A49247-B940-450C-8E1E-2F8148CB0933 '}' не найден. 1 образец (ы): ['crud/edit/(? P \\ d +) $'] –
Кстати, я мог иметь ту же ошибку при использовании кода в части редактирования моего сообщения. Можете ли вы проверить почту снова? Я думаю, что проблема здесь 'edit/(? P \ d +) $' my pk is uniqueidentifier здесь, как вы видите. –
@NurzhanNogerbek пытается изменить регулярное выражение в вашем шаблоне: вместо '\ d +' использовать '[a-zA-Z0-9 _ \ -] +'. – neverwalkaloner