premises-rental/app/models.py

73 строки
1.9 KiB
Python

from django.db.models import Model
from django.db.models import OneToOneField, ManyToManyField, CASCADE
from django.db.models import CharField, TextField, IntegerField, DecimalField, BooleanField, ImageField
class RoomImage(Model):
class Meta:
verbose_name_plural = 'Изображения комнат'
image = ImageField(
verbose_name='Изображение',
)
class RoomPanorama(Model):
class Meta:
verbose_name_plural = 'Панорамы комнат'
image = ImageField(
verbose_name='Изображение',
)
class Room(Model):
class Meta:
verbose_name_plural = 'Комнаты'
name = CharField(
verbose_name='Название',
max_length=32,
unique=True,
)
description = TextField(
verbose_name='Описание',
max_length=4096,
)
preview_image = OneToOneField(
verbose_name='Изображение в каталоге',
to=RoomImage,
on_delete=CASCADE,
related_name='room_preview',
)
room_images = ManyToManyField(
verbose_name='Изображения',
to=RoomImage,
related_name='room_images',
)
panorama_images = ManyToManyField(
verbose_name='Панорамы',
to=RoomPanorama,
)
area = DecimalField(
verbose_name='Площадь',
max_digits=4,
decimal_places=1,
)
price = DecimalField(
verbose_name='Стоимость',
max_digits=10,
decimal_places=2,
)
ordinal = IntegerField(
verbose_name='Порядковый номер',
)
is_visible = BooleanField(
verbose_name='Отображать в каталоге',
default=True,
)
is_available = BooleanField(
verbose_name='Доступно для аренды',
default=True,
)