Фото-галерея Django(1): Модели

категория: Django
Пришло время создания фото-галереи для сайта cryptohistory.ru. Задача поставлена так: 1. Есть альбомы, которые можно добавлять, удалять, редактировать. 2. В каждом альбоме есть много фотографий, которые можно добавлять, удалять, редактировать. 3. При нажатии на каждую фотографию, чтоб она увеличивалась и можно было перелистывать другие в реальном размере, не выходя из просмотра. 4. Ну и конечно, чтоб это все было красиво и летало:) Вроде все понятно, можно приступать. Готовые решения я не буду использовать пока, так как нужна практика написания ручками, да и галерея не многопользовательская и сложностей особо не представляет. Будет такая структура: 1. Список альбомов - ListView. 2. Фотографии в альбоме - DetailView. 3. Оформление при выделении альбомов и фотографий CSS, jQuery. 4. Для превьюшек буду использовать sorl.thumbnail. 5. Для отображения фотографий буду использовать PrettyPhoto. Начинаем создавать модели models.py:
#! coding: utf-8
from django.db import models
#Альбом с фотографиями
class Album(models.Model):
  title = models.CharField("Название альбома", max_length=100)
  slug = models.SlugField("Ссылка для альбома", max_length=100, unique=True)
  img = models.ImageField("Изображение альбома", upload_to='images',
	help_text='Размер изображения 200px на 200px')
    class Meta:
        ordering = ['title']
        verbose_name = 'Альбом'
        verbose_name_plural = 'Альбомы'
    def __unicode__(self):
        return self.title
#Фотографии в альбоме
class Photo(models.Model):
  title = models.CharField("Название фотографии", max_length=100)
  album = models.ForeignKey(Album, verbose_name='Альбом')
  img = models.ImageField("Фото", upload_to='images',
	help_text='Желательно, чтоб фото было не большого размера')
    class Meta:
        ordering = ['title']
        verbose_name = 'Фото'
        verbose_name_plural = "Фотографии"
    def __unicode__(self):
        return self.title
Связка фотографии с альбомом идет через ForeighKey (один к многим). Думаю тут все понятно. В следующей статьях продолжу создание фото-галереи.


blog comments powered by Disqus