Files
tripwithbonus/backend/sitemanagement/models.py
2025-05-16 12:02:36 +03:00

57 lines
2.2 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import os
from django.conf import settings
from django.db import models
from django.utils.text import slugify
from django.db.models.signals import pre_save
from django.dispatch import receiver
from transliterate import translit
class FAQ (models.Model):
title = models.CharField(max_length=250)
content = models.CharField(max_length=800)
class Meta:
verbose_name = 'FAQ'
verbose_name_plural = 'FAQs'
ordering = ['id']
def __str__(self):
return self.title
class News(models.Model):
titleImage = models.ImageField(upload_to='uploads/news/images/', verbose_name="Главная картинка")
title = models.CharField(max_length=100, verbose_name="Заголовок")
content = models.TextField(max_length=1000, verbose_name="Контент статьи")
slug = models.SlugField(max_length=255, null=True, blank=True, editable=False)
created_at = models.DateTimeField(auto_now_add=True, null=True, blank=True)
filename = models.CharField(max_length=255, blank=True)
path = models.CharField(max_length=255, blank=True)
class Meta:
verbose_name = 'Новость'
verbose_name_plural = 'Новости'
ordering = ['id']
def __str__(self):
return self.title
def save(self, *args, **kwargs):
super().save(*args, **kwargs) #сохраняем изображение
# генерируем путь к файлу если удалось его сохранить
if self.titleImage:
self.filename = os.path.basename(self.titleImage.name)
self.path = f'{settings.BASE_URL}{settings.MEDIA_URL}{self.titleImage.name}'
super().save(*args, **kwargs) # записываем путь и имя файла в базу
else:
self.filename = ''
self.path = ''
@receiver(pre_save, sender=News)
def generate_slug(sender, instance, **kwargs):
if not instance.slug:
# транслит с русского на латиницу
transliterated_title = translit(instance.title, 'ru', reversed=True)
# создаем слаг и заменяем пробелы на дефисы
instance.slug = slugify(transliterated_title)