Не удается найти экземпляр модели django в новом представлении
У меня есть CreateView, в котором пользователи вводят данные, после отправки формы пользователь должен перейти в DetailView для только что отправленной записи. Я хочу использовать UUID для идентификации записей - но после отправки формы я получаю следующую ошибку:
http://localhost:8000/patient/2792470c-216a-44cc-a4ef-98c12d946844/
NO patient found matching the query
Вот основная структура проекта:
models.py:
class Patient(TimeStampedModel):
# get a unique id for each patient
patient_id = models.UUIDField(primary_key=True, unique=True, default=uuid.uuid4, editable=False)
name = models.CharField("Patient Name", max_length=255)
views.py
class PatientCreateView(LoginRequiredMixin, CreateView):
model = Patient
fields = ['name']
def form_valid(self, form):
form.instance.creator = self.request.user
return super().form_valid(form)
def get_success_url(self):
return reverse('patient:detail',
kwargs={"slug": self.object.patient_id})
class PatientDetailView(DetailView):
model = Patient
urls.py
urlpatterns = [
path(
route='add/',
view=views.PatientCreateView.as_view(),
name='add'),
path(
route='<slug:slug>/',
view=views.PatientDetailView.as_view(),
name='detail'),
]
Пожалуйста, не мог бы кто-нибудь попытаться указать, где я ошибаюсь?
Вам нужно добавить поле slug_field в DetailView:
class PatientDetailView(DetailView):
model = Patient
slug_field = "patient_id"