Create basic order creation form
This commit is contained in:
@@ -1,10 +1,13 @@
|
||||
from django.core.validators import RegexValidator
|
||||
from django.db import models
|
||||
|
||||
from account.models import SiteUser
|
||||
|
||||
|
||||
class City(models.Model):
|
||||
code = models.CharField(primary_key=True, max_length=20, verbose_name="Код города")
|
||||
code = models.CharField(primary_key=True, max_length=20, verbose_name="Код города", validators=[
|
||||
RegexValidator(regex="^[0-9a-zA-Z_]*$"),
|
||||
])
|
||||
name = models.CharField(unique=True, max_length=50, verbose_name="Название города")
|
||||
|
||||
def __str__(self):
|
||||
@@ -17,13 +20,13 @@ class City(models.Model):
|
||||
|
||||
class Order(models.Model):
|
||||
# основные поля: название и описание
|
||||
name = models.CharField(max_length=200)
|
||||
description = models.TextField(blank=True)
|
||||
name = models.CharField(max_length=200, verbose_name="Название заказа")
|
||||
description = models.TextField(blank=True, verbose_name="Описание")
|
||||
|
||||
# площадь в квадратных метрах
|
||||
square = models.DecimalField(max_digits=5, decimal_places=2, blank=False)
|
||||
square = models.DecimalField(max_digits=7, decimal_places=2, blank=False, verbose_name="Площадь в м²")
|
||||
|
||||
work_time = models.CharField(max_length=100, blank=True)
|
||||
work_time = models.CharField(max_length=100, blank=True, verbose_name="Рабочее время")
|
||||
|
||||
# дальше вид дома, тип ремонта, тип квартиры, требуется дизайн проект, закуп материала, тип исполнителя
|
||||
|
||||
@@ -37,14 +40,14 @@ class Order(models.Model):
|
||||
TYPE_OF_RENOVATION_DESIGN = 'design'
|
||||
|
||||
TYPE_OF_RENOVATION_CHOICES = [
|
||||
(CHOICE_UNDEFINED, 'Не указан'),
|
||||
(TYPE_OF_RENOVATION_OVERHAUL, 'Капитальный'),
|
||||
(TYPE_OF_RENOVATION_PARTIAL, 'Частичный'),
|
||||
(TYPE_OF_RENOVATION_REDECOR, 'Косметический'),
|
||||
(TYPE_OF_RENOVATION_PREMIUM, 'Премиальный'),
|
||||
(TYPE_OF_RENOVATION_DESIGN, 'Дизайнерский'),
|
||||
]
|
||||
type_of_renovation = models.CharField(max_length=10, choices=TYPE_OF_RENOVATION_CHOICES, default=CHOICE_UNDEFINED)
|
||||
type_of_renovation = models.CharField(max_length=10, choices=TYPE_OF_RENOVATION_CHOICES, default=CHOICE_UNDEFINED,
|
||||
blank=True, verbose_name="Тип ремонта")
|
||||
|
||||
# тип дома
|
||||
TYPE_OF_HOUSE_BLOCK = 'block'
|
||||
@@ -53,50 +56,51 @@ class Order(models.Model):
|
||||
TYPE_OF_HOUSE_PANEL = 'panel'
|
||||
|
||||
TYPE_OF_HOUSE_CHOICES = [
|
||||
(CHOICE_UNDEFINED, 'Не указан'),
|
||||
(TYPE_OF_HOUSE_BLOCK, 'Блочный'),
|
||||
(TYPE_OF_HOUSE_BRICK, 'Кирпичный'),
|
||||
(TYPE_OF_HOUSE_MONOLITH, 'Монолит'),
|
||||
(TYPE_OF_HOUSE_PANEL, 'Панельный'),
|
||||
]
|
||||
type_of_house = models.CharField(max_length=10, choices=TYPE_OF_HOUSE_CHOICES)
|
||||
type_of_house = models.CharField(max_length=10, choices=TYPE_OF_HOUSE_CHOICES, blank=True, default=CHOICE_UNDEFINED,
|
||||
verbose_name="Тип дома")
|
||||
|
||||
# тип квартиры
|
||||
TYPE_OF_ROOM_PRIMARY = 'primary'
|
||||
TYPE_OF_ROOM_SECONDARY = 'secondary'
|
||||
|
||||
TYPE_OF_ROOM_CHOICES = [
|
||||
(CHOICE_UNDEFINED, 'Не указан'),
|
||||
(TYPE_OF_ROOM_PRIMARY, 'Первичка'),
|
||||
(TYPE_OF_ROOM_SECONDARY, 'Вторичка')
|
||||
]
|
||||
type_of_room = models.CharField(max_length=10, choices=TYPE_OF_ROOM_CHOICES)
|
||||
type_of_room = models.CharField(max_length=10, choices=TYPE_OF_ROOM_CHOICES, blank=True, default=CHOICE_UNDEFINED,
|
||||
verbose_name="Тип квартиры")
|
||||
|
||||
# требуется дизайн проект
|
||||
REQUIRED_DESIGN_CHOICES = ((None, 'Не указано'), (True, 'Да'), (False, 'Нет'))
|
||||
is_require_design = models.BooleanField(default=None, blank=True, null=True, choices=REQUIRED_DESIGN_CHOICES)
|
||||
REQUIRED_DESIGN_CHOICES = ((True, 'Да'), (False, 'Нет'))
|
||||
is_require_design = models.BooleanField(default=None, blank=True, null=True, choices=REQUIRED_DESIGN_CHOICES,
|
||||
verbose_name="Требуется дизайн проект")
|
||||
|
||||
# закуп материала
|
||||
PURCHASE_OF_MATERIAL_EXECUTOR = 'executor'
|
||||
PURCHASE_OF_MATERIAL_CUSTOMER = 'customer'
|
||||
|
||||
PURCHASE_OF_MATERIAL_CHOICES = [
|
||||
(CHOICE_UNDEFINED, 'Не указано'),
|
||||
(PURCHASE_OF_MATERIAL_EXECUTOR, 'Исполнитель'),
|
||||
(PURCHASE_OF_MATERIAL_CUSTOMER, 'Заказчик')
|
||||
]
|
||||
purchase_of_material = models.CharField(max_length=10, choices=PURCHASE_OF_MATERIAL_CHOICES)
|
||||
purchase_of_material = models.CharField(max_length=10, choices=PURCHASE_OF_MATERIAL_CHOICES,
|
||||
blank=True, default=CHOICE_UNDEFINED, verbose_name="Закуп материала")
|
||||
|
||||
# тип исполнителя
|
||||
TYPE_OF_EXECUTOR_INDIVIDUAL = 'individual'
|
||||
TYPE_OF_EXECUTOR_COMPANY = 'company'
|
||||
|
||||
TYPE_OF_EXECUTOR_CHOICES = [
|
||||
(CHOICE_UNDEFINED, 'Не указан'),
|
||||
(TYPE_OF_EXECUTOR_INDIVIDUAL, 'Самозанятый/бригада'),
|
||||
(TYPE_OF_EXECUTOR_COMPANY, 'Компания')
|
||||
]
|
||||
type_of_executor = models.CharField(max_length=10, choices=TYPE_OF_EXECUTOR_CHOICES)
|
||||
type_of_executor = models.CharField(max_length=10, choices=TYPE_OF_EXECUTOR_CHOICES,
|
||||
blank=True, default=CHOICE_UNDEFINED, verbose_name="Тип исполнителя")
|
||||
|
||||
# дальше отдельные параметры
|
||||
is_with_warranty = models.BooleanField(default=True, verbose_name="С гарантией")
|
||||
@@ -106,9 +110,13 @@ class Order(models.Model):
|
||||
is_with_garbage_removal = models.BooleanField(default=False, verbose_name="С вывозом мусора")
|
||||
|
||||
# примерная цена
|
||||
approximate_price = models.DecimalField(max_digits=9, decimal_places=2, blank=False, verbose_name="Цена")
|
||||
approximate_price = models.DecimalField(max_digits=12, decimal_places=2, blank=False, verbose_name="Цена")
|
||||
|
||||
# address_city = models.ForeignKey(City, on_delete=models.CASCADE, blank=False, related_name="address_city")
|
||||
date_start = models.DateField(blank=True, default=None, verbose_name="Дата начала")
|
||||
date_end = models.DateField(blank=True, default=None, verbose_name="Дата окончания")
|
||||
|
||||
address_city = models.ForeignKey(City, on_delete=models.CASCADE, blank=False, related_name="address_city",
|
||||
verbose_name="Город")
|
||||
address_text = models.CharField(max_length=70, blank=True, verbose_name="Улица, дом")
|
||||
|
||||
owner = models.ForeignKey(SiteUser, on_delete=models.CASCADE, null=True, related_name="owner",
|
||||
|
||||
Reference in New Issue
Block a user