сделал модель кинозалы, места кинозалов и поправил модель профиля
This commit is contained in:
parent
bbf75d3e7d
commit
2d361d5342
@ -1,3 +1,46 @@
|
||||
from django.db import models
|
||||
from django.db.models import Model, CharField, IntegerField, OneToOneField, CASCADE
|
||||
from django.core.validators import MinValueValidator
|
||||
|
||||
# Create your models here.
|
||||
|
||||
class Auditorium(Model):
|
||||
number = CharField(
|
||||
max_length=20,
|
||||
verbose_name='номер кинозала',
|
||||
)
|
||||
row_count = IntegerField(
|
||||
verbose_name='количество рядов кресел в зале',
|
||||
validators=[
|
||||
MinValueValidator(1),
|
||||
],
|
||||
)
|
||||
|
||||
class Meta:
|
||||
db_table = "timetable_auditoriums"
|
||||
verbose_name = "Зал"
|
||||
verbose_name_plural = "Залы"
|
||||
|
||||
|
||||
class Rows(Model):
|
||||
row_number = IntegerField(
|
||||
verbose_name='номер ряда',
|
||||
validators=[
|
||||
MinValueValidator(1),
|
||||
],
|
||||
)
|
||||
column_count = IntegerField(
|
||||
verbose_name='количество кресел в ряду',
|
||||
validators=[
|
||||
MinValueValidator(1),
|
||||
],
|
||||
)
|
||||
auditorium = OneToOneField(
|
||||
Auditorium,
|
||||
on_delete=CASCADE,
|
||||
verbose_name="зал",
|
||||
related_name="rows",
|
||||
)
|
||||
|
||||
class Meta:
|
||||
db_table = "timetable_rows"
|
||||
verbose_name = "Место"
|
||||
verbose_name_plural = "Места"
|
||||
|
||||
@ -1,12 +1,16 @@
|
||||
import time
|
||||
|
||||
from django.conf import settings
|
||||
from django.db.models import Model, OneToOneField, CASCADE, DateField, CharField
|
||||
from django.db.models import Model, OneToOneField, CASCADE, DateField, CharField, ImageField
|
||||
from django.utils.safestring import mark_safe
|
||||
from sorl.thumbnail import get_thumbnail
|
||||
|
||||
|
||||
class Profile(Model):
|
||||
|
||||
def get_upload_path(self, filename):
|
||||
return f'users/avatars/{self.user_id}/{time.time()}_{filename}'
|
||||
|
||||
user = OneToOneField(
|
||||
settings.AUTH_USER_MODEL,
|
||||
verbose_name='пользователь',
|
||||
@ -15,22 +19,27 @@ class Profile(Model):
|
||||
on_delete=CASCADE,
|
||||
)
|
||||
birthday = DateField(
|
||||
verbose_name='дата рождения пользователя',
|
||||
null=True,
|
||||
blank=True,
|
||||
)
|
||||
role = CharField(
|
||||
verbose_name='роль пользователя',
|
||||
max_length=20,
|
||||
)
|
||||
image = ImageField(
|
||||
null=True,
|
||||
blank=True,
|
||||
verbose_name="аватар пользователя",
|
||||
upload_to=get_upload_path,
|
||||
)
|
||||
|
||||
def get_upload_path(self, filename):
|
||||
return f"users/avatars/{self.user_id}/{time.time()}_{filename}"
|
||||
|
||||
def get_image_x300(self):
|
||||
return get_thumbnail(
|
||||
self.image,
|
||||
"300x300",
|
||||
'300x300',
|
||||
quality=51,
|
||||
crop="center",
|
||||
crop='center',
|
||||
)
|
||||
|
||||
def image_tmb(self):
|
||||
@ -39,13 +48,14 @@ class Profile(Model):
|
||||
f'<img scr="{self.image.url}" width=50px>',
|
||||
)
|
||||
|
||||
return "Нет изображения"
|
||||
return 'Нет изображения'
|
||||
|
||||
image_tmb.short_description = "превью"
|
||||
image_tmb.short_description = 'превью'
|
||||
image_tmb.allow_tags = True
|
||||
|
||||
list_display = ["image_tmb"]
|
||||
list_display = ['image_tmb']
|
||||
|
||||
class Meta:
|
||||
verbose_name = "данные пользователя"
|
||||
verbose_name_plural = "данные пользователей"
|
||||
verbose_name = 'данные пользователя'
|
||||
verbose_name_plural = 'данные пользователей'
|
||||
db_table = "users_profiles"
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user