/
weeny
/
Project
Обзор
Документация
Войти
/
weeny
/
Project
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
gallery/models.py
86 строк
3 KB
weeny
запустил проект
11 мар 2026, 18:13
11 мар 2026, 18:13
9c48a43
Код
Авторство
О чём код?
from django.db import models from django.utils.html import format_html from django.utils.translation import gettext_lazy as _ from adminsortable2.admin import SortableAdminMixin from filer.fields.image import FilerImageField class Slide(models.Model): """Модель слайда для галереи""" title = models.CharField( verbose_name=_('Заголовок'), max_length=255, help_text=_('Название слайда') ) image = FilerImageField( verbose_name=_('Изображение'), related_name='slide_image', on_delete=models.CASCADE, help_text=_('Основное изображение слайда') ) thumbnail = FilerImageField( verbose_name=_('Миниатюра'), related_name='slide_thumbnail', on_delete=models.CASCADE, null=True, blank=True, help_text=_('Миниатюра для навигации (если не заполнено, используется основное изображение)') ) description = models.TextField( verbose_name=_('Описание'), blank=True, help_text=_('Описание слайда для отображения в галерее') ) is_published = models.BooleanField( verbose_name=_('Опубликовано'), default=True, help_text=_('Если не отмечено, слайд не будет отображаться на сайте') ) order = models.PositiveIntegerField( verbose_name=_('Порядок'), default=0, db_index=True, help_text=_('Порядок сортировки слайдов') ) created_at = models.DateTimeField( verbose_name=_('Дата создания'), auto_now_add=True ) updated_at = models.DateTimeField( verbose_name=_('Дата обновления'), auto_now=True ) class Meta: verbose_name = _('Слайд') verbose_name_plural = _('Слайды') ordering = ['order'] def __str__(self): return self.title def image_preview(self): """Предпросмотр изображения в админке""" if self.image: return format_html( '<img src="{}" style="max-width: 150px; max-height: 100px; border-radius: 4px;" />', self.image.url ) return _('Нет изображения') image_preview.short_description = _('Предпросмотр') def thumbnail_preview(self): """Предпросмотр миниатюры в админке""" if self.thumbnail: return format_html( '<img src="{}" style="max-width: 80px; max-height: 80px; border-radius: 4px;" />', self.thumbnail.url ) elif self.image: return format_html( '<img src="{}" style="max-width: 80px; max-height: 80px; border-radius: 4px; opacity: 0.5;" />', self.image.url ) return _('Нет миниатюры') thumbnail_preview.short_description = _('Миниатюра')