Skip to content

Instantly share code, notes, and snippets.

@ruchej
Created December 12, 2019 05:46
Show Gist options
  • Save ruchej/cf75a9bd038f42f096d467c13931ad37 to your computer and use it in GitHub Desktop.
Save ruchej/cf75a9bd038f42f096d467c13931ad37 to your computer and use it in GitHub Desktop.
Модель главного приложения
# -*- coding: utf-8 -*-
from django.utils.html import format_html
from django.db import models
STATUS_CHOICES = (
('draft', 'Черновик'),
('published', 'Опубликовано'),
)
TEMPLATE_CHOICES = (
('core/page.html', 'Страница'),
('core/about_page.html', 'Страница о нас'),
)
class PublishedManager(models.Manager):
def get_queryset(self):
return super().get_queryset().filter(publish='published')
class Published(models.Model):
"""Абстрактная модель определяющая опубликованность"""
publish = models.CharField(max_length=10, choices=STATUS_CHOICES, default='draft', verbose_name='Статус публикации')
objects = models.Manager()
published = PublishedManager()
class Meta:
abstract = True
class Menu(Published):
"""Меню"""
name = models.CharField(max_length=100, verbose_name='Название')
slug = models.SlugField(max_length=100, verbose_name='URL страницы')
sort = models.SmallIntegerField(verbose_name='Порядок')
class Meta:
verbose_name = 'Меню'
verbose_name_plural = 'Меню'
class Pages(Published):
"""Данные страниц"""
title = models.CharField(max_length=200, verbose_name='Заголовок')
keywords = models.CharField(max_length=255, blank=True, null=True, verbose_name='Ключевые слова')
description = models.CharField(max_length=160, blank=True, null=True, verbose_name='Краткое описание')
head_content = models.TextField(blank=True, null=True, verbose_name='Содержание шапки страницы')
cover = models.ImageField(upload_to=COVER, blank=True, null=True, verbose_name='Обложка шапки')
template_name = models.CharField(max_length=100, choices=TEMPLATE_CHOICES, default='core/page.html', verbose_name='Шаблон страницы')
class Meta:
verbose_name = 'Страница'
verbose_name_plural = 'Страницы'
# --------------------------------------
# Услуги
# --------------------------------------
class Services(models.Model):
"""Услуги"""
name = models.CharField(max_length=200, verbose_name='Услуга')
class Meta:
verbose_name = 'Услуга'
verbose_name_plural = 'Услуги'
class CategoriesServices(models.Model):
"""Категории услуг"""
service = models.ForeignKey(Services, on_delete=models.CASCADE, verbose_name='Услуга')
name = models.CharField(max_length=200, verbose_name='Категория услуги')
verbose_name_plural = 'Услуги'
class Meta:
verbose_name = 'Категория услуги'
verbose_name_plural = 'Категории услуг'
class CostServices(models.Model):
"""Стоимость услуг"""
category = models.ForeignKey(Services, on_delete=models.CASCADE, verbose_name='Категория')
price = models.IntegerField(default=0, verbose_name='Цена от')
explanation = models.CharField(max_length=255, verbose_name='Пояснения для стоимости')
class Meta:
verbose_name = 'Стоимость услуги'
verbose_name_plural = 'Стоимость услуг'
# --------------------------------------
# Стикеры
# --------------------------------------
STATUS_CHOICES = (
('style1', 'Стиль 1'),
('style2', 'Стиль 2'),
)
class Stickers(models.Model):
"""Стикры"""
title = models.CharField(max_length=200, verbose_name='Заголовок')
summary = models.TextField(blank=True, null=True, verbose_name='Краткое описание стикера')
description = models.TextField(blank=True, null=True, verbose_name='Подробное описание стикера')
buttonname = models.CharField(max_length=50, verbose_name='Название кнопки')
url = models.URLField(blank=True, null=True, verbose_name='Адрес страницы перехода')
stylestic = models.CharField(max_length=10, choices=STATUS_CHOICES, default='style1', verbose_name='Стиль стикера')
class Meta:
verbose_name = 'Стикер'
verbose_name_plural = 'Стикеры'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment