Получение конкретного объекта uuid в представлении из модели в django
У меня есть приложение django, в котором пользователь может загружать файлы в курс с 3 редактируемыми полями.
models.py
class Course(models.Model):
course_id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False, unique=True)
title = models.CharField(max_length=20)
thumbnail = models.ImageField(upload_to='thumbnails', null=False, default='default.jpg')
videofile = models.FileField(validators=[FileExtensionValidator], upload_to='videos')
def path(self):
return self.url
У меня есть представление для отображения миниатюр всех курсов, и когда пользователь нажимает на миниатюру, она перенаправляет его на страницу подробностей курса.
urls.py
path('course/<uuid:course_id>/', views.course_detail, name='course-detail')
Так что мой вопрос заключается в том, как я могу получить информацию о полях модели Course в моем html файле, чтобы отобразить их.
views.py
def course_detail(request, *args, **kwargs):
course = models.Course.objects.get()
context = {
'course': course,
}
return render(request, 'courses/info_course_view.html', context)
Без uuid я бы просто написал pk=pk в скобках, но поскольку я использую uuid, я не знаю, как заставить его работать.
шаблон
<div class="container">
{{ course.title }}
</div>
Спасибо всем за помощь!
Вероятно, вам нужно изменить файл views и urls следующим образом:
urls.py
path('course/<str:course_id>/', views.course_detail, name='course-detail')
views.py
def course_detail(request, course_id):
course = models.Course.objects.get(course_id=course_id)
context = {
'course': course,
}
return render(request, 'courses/info_course_view.html', context)
шаблон
<div class="container">
{{ course.title }}
</div>
На самом деле, основная проблема в том, что вы не поместили course_id внутрь аргумента course.