class Tag(models.Model):
tag_title = models.CharField(max_length=200, verbose_name='Тег')
class Project(models.Model):
title = models.CharField(max_length=200, verbose_name='Заголовок проекта')
description = models.TextField(verbose_name='Описание')
created_date = models.DateTimeField(default=timezone.now, verbose_name='Дата проекта')
class Preview(models.Model):
project = models.ForeignKey(Project, on_delete=models.CASCADE, verbose_name='Принадлежность к проекту')
title = models.CharField(max_length=200, verbose_name='Заголовок изображения')
image = models.ImageField(upload_to='путь на сервере', verbose_name='Файл изображения')
tag = models.ForeignKey(Tag, on_delete=models.DO_NOTHING, blank=True, verbose_name='Тег изображения')
from django.shortcuts import render
from .models import Project, Preview, Tag
def portfolio(arg):
# Вот тут нужна ваша магия
return render(arg, 'portfolio.html', {})
{
'title' : ['Название проекта 1'],
'description' : ['Описание проекта 1'],
'thumbnail' : ['Имя изображения 1', 'Имя изображения 2', 'Имя изображения 3'],
'large' : ['Имя изображения 1', 'Имя изображения 2', 'Имя изображения 3'],
'img_title' : ['Заголовок изображения 1', 'Заголовок изображения 2', 'Заголовок изображения 3'],
'tags' : ['Тег изображения 1', 'Тег изображения 2', 'Тег изображения 3']
},
{
'title' : ['Название проекта 2'],
'description' : ['Описание проекта 2'],
'thumbnail' : ['Имя изображения 1', 'Имя изображения 2', 'Имя изображения 3'],
'large' : ['Имя изображения 1', 'Имя изображения 2', 'Имя изображения 3'],
'img_title' : ['Заголовок изображения 1', 'Заголовок изображения 2', 'Заголовок изображения 3'],
'tags' : ['Тег изображения 1', 'Тег изображения 2', 'Тег изображения 3']
},
и т.д.
for project in Projects.objects.all():
print('Title: ', project.title)
print('Description: ', project.description)
for preview in project.preview_set.all():
print('\tImage title: ', preview.title)
print('\tImage path: ', preview.image)
{% for project in project_list %}
<h2>{{ project.title }}</h2>
<p>{{ project.description }}</p>
{% for preview in project.preview_set.all %}
<h3>{{ preview.title }}</h3>
<img src="{{ preview.image }}">
{% endfor %}
{% endfor %}
def portfolio(arg):
ctx = {
'project_list': Project.objects.all(),
}
return render(arg, 'portfolio.html', ctx)