Получение конкретного объекта 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.

Вернуться на верх