ошибка:
.Reverse for 'patient_update' with keyword arguments '{'pk': ''}' not found. 1 pattern(s) tried: ['patients/update/(?P<pk>[0-9]+)$']?
всякий раз, когда я пытаюсь вызвать URL в шаблоне, будь то в действии тега формы или просто обычного якоря.
Я сделал вид, где пользователи могут редактировать информацию о пациентах, и, поскольку я использую пользовательскую модель пользователя, мне пришлось сделать пользовательский вид обновления / удаления. Представления работают, когда я вводю их вручную по URLно когда я помещаю ссылку на них с помощью тега привязки, я получаю сообщение об ошибке, что он не может получить доступ к ПК, я пробовал следовать много ответов здесь и видео на YT, но ошибка все еще там
Просмотры.py
def PatientUpdateView(request,pk=None):
patient = get_object_or_404(models.Patient, pk=pk)
form = forms.PatientForm(request.POST or None ,instance=patient)
if form.is_valid() :
patient = form.save(commit=False)
patient.save()
messages.success(request,"patient updated!")
context = {
'patient': patient,
'form': form
}
return render(request,'patients/patient_edit_form_success.html',context)
else:
context = {
'patient' : patient,
'form': form,
}
return render(request, 'patients/patient_edit_form.html', context)
и вот как я называю это в теге привязки
<a class="btn btn-info btn-sm" href="{% url 'patients:patient_update' patient.pk %}">Open</a>
Я пробовал
pk = patient.pk
pk = pk
pk={{ patient.pk}}
и многие другие способы его вызова.
urls.py вот шаблон URL, который я использую
path('update/<int:pk>', views.PatientUpdateView, name='patient_update'),
Я пытался использовать метод URL в шаблоне URL
Я даже пытался использовать представление на основе классов, так что выесть идеи, как я могу это исправить?
дополнительная информация
tables.py
class PatientTable(tables.Table):
FirstName = tables.Column(linkify=("patients:patient_detail", {"pk": tables.A("pk")}))
LastName = tables.Column(linkify=("patients:patient_detail", {"pk": tables.A("pk")}))
Telephone_no = tables.Column(linkify=("patients:patient_detail", {"pk": tables.A("pk")}))
# delete = tables.LinkColumn('patients:patient_delete', args=[A('pk')], attrs={
# 'a': {'class': 'btn'}
# })
# update = tables.LinkColumn('patients:patient_update', args=[A('pk')], attrs={
# 'a': {'class': 'btn'}
# })
edit = TemplateColumn(template_name='patients/edit_btn.html')
# delete = TemplateColumn(template_name='patients/patient_delete.html')
class Meta:
model = Patient
attrs = {'class': 'table table-striped table-hover'}
exclude = ("user", "Notes", "Adress")
template_name = 'django_tables2/bootstrap4.html'
и представление списка
def Patients_list(request):
patients = Patient
table = PatientTable(patients.objects.filter(user=request.user))
RequestConfig(request).configure(table)
return render(request, 'patients/patients_list.html',{
'table' : table
})
и вHTML-файл представления списка:
{% extends 'base.html' %}
{% load render_table from django_tables2 %}
{% block content %}
<style>
#content{
margin-left : 18%;
margin-right : 2%;
}
</style>
<div id="content">
{% if user.is_authenticated %}
<h1> Patients list: </h1>
<br>
<a href="{%url 'patients:patient_create'%}" class="btn btn-info" role="button">Add Patient</a>
<br>
<br>
{% render_table table %}
{% else %}
<h2>please login</h2>
{% endif %}
{% endblock %}
</div>
пациент edit_form.html
{% extends 'base.html' %}
{% load crispy_forms_tags %}
#content{
margin-top: 100px;
margin-left : 18%;
margin-right : 2%;
}
{% block content %}
<div id="content">
<h2>Add Patient</h2>
<form method="POST" >
{% csrf_token %}
{{ form|crispy }}
<button type="submit" class="btn btn-primary" >Update</button>
<p></p>
</form>
</div>
{% endblock %}