Created
December 12, 2019 05:46
-
-
Save ruchej/cf75a9bd038f42f096d467c13931ad37 to your computer and use it in GitHub Desktop.
Модель главного приложения
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# -*- 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