Поля модели¶
Field¶
- class
Field
(**kwargs)¶ Базовый класс для полей модели
blank=False - булево, поле может хранить пустое значение
choices=None - список значений, которые может хранить поле
default=NOT_PROVIDED - значение поля по умолчанию
db_column=None - строка, имя поля таблицы, если не задано, будет использоваться имя поля модели
db_index=False - булево, создавать индекс для поля
editable=True - булево, пле редактируемо
help_text=’’ - строка, доп описание
max_length - число, максимальная длина поля
null=False - булево, поле может хранить значение null
primary_key=False - булево, поле является первичным ключом
unique=False - булево, значения в поле уникальны
unique_for_date=None - имя поля модели (
DateTimeField
илиDateField
) относительно которых данное поле уникальноunique_for_month=None - имя поля модели (
DateTimeField
илиDateField
) относительно которых данное поле уникальноunique_for_year=None - имя поля модели (
DateTimeField
илиDateField
) относительно которых данное поле уникальноverbose_name=None - имя поля
auto_created=False
error_messages=Non
db_tablespace=None
name=None
rel=None
serialize=True
validators=[]
BooleanField¶
- class
BooleanField
¶ Логическое поле
is_done = models.BooleanField( default=False, db_index=True, verbose_name="done", )
CharField¶
- class
CharField
¶ Строковое поле
Наследник
Field
Обязательные поля:
max_length - число, максимальное количесвто символов
unique - булево, поле уникально
unique_for_date - поле, для которого это поле уникально
verbose_name - название поля
name = models.CharField( max_length=32, unique=True, verbose_name="name", unique_for_date="pubdate", )
DateField¶
DateTimeField¶
EmailField¶
FileField¶
- class
FileField
(**kwargs)¶ Поле для хранения файла любого типа
upload_to - строка или функция, путь к папке куда грузить файлы
def upload_to(instance, filename): """ возвращает путь до загружаемого файла """ return os.path.join('blog', filename) file_field = model.FileField(upload_to=upload_to)
-
name
¶ Путь к файлу, относитльно
django.settings.MEDIA_ROOT
-
size
¶ Размер файла в байтах
-
url
¶ Интернет адрес файла
ImageField¶
- class
ImageField
(**kwargs)¶ Поле для хранения изображений
Требует установленной библиоткеи pillow
upload_to - строка, путь к папке куда грузить файлы
width_field - имя поля модели, где будет храниться ширина изображения
height_field - имя поля модели, где будет храниться высота изображения
image = models.ImageField(upload_to='images/') image = models.ImageField(upload_to='images/%Y/%m/%d')
thumbnail_width = models.PositiveSmallIntegerField() thumbnail_height = models.PositiveSmallIntegerField() thumbnail = models.ImageField( upload_to='thumbnails/', width_field='thumbnail_width', height_field='thumbnail_height', )
obj = SomeModel.objects.get() # obj.thumbnail.url
-
height
¶ Высота картинки
-
name
¶ Путь к файлу, относитльно MEDIA_ROOT
-
size
¶ Размер файла в байтах
-
url
¶ Интернет адрес файла
-
width
¶ Высота картинки
-
delete
(save=True)¶ Удаляет выбранный файл.
Параметр save указывает, сохранять ли модель после удаления файла.
class SomeModel(models.Model): def save(self, *args, **kwargs): this_record = SomeModel.objects.get() if this_record.thumbnail != self.thumbnail: this_record.thumbnail.delete(save=False) super().save(*args, **kwargs) def delete(self, *args, **kwargs): self.thumbnail.delete(save=False) super().delete(*args, **kwargs)
IntegerField¶
- class
IntegerField
¶ 32-разрядное, обычное число
from django.core.validators import ( MinValueValidator, MaxValueValidator) CATEGORIES = ( (1, "car"), (2, "house"), ) class Good(models.Model): category = models.IntegerField( choices=CATEGORIES, default=1, db_index=True, ) discount = models.IntegerField( validators=[MinValueValidator(0), MaxValueValidator(100)])
IPAddressField¶
- class
IPAddressField
¶ Поле с IPv4 адресом
Warning
deprecated, use GenericIPAddressField
SlugField¶
- class
SlugField
(**kwargs)¶ Короткий заголовок или название, которое включает только символы латиницы, цифры, дефисы и символы подчеркивания.
Наследник
CharField
max_length = 50
db_index = True
from django.utils.text import slugify class Image(models.Model): title = models.CharField(max_length=200) slug = models.SlugField(max_length=200, blank=True) def save(self, *args, **kwargs): self.slug = slugify(self.title) super(Image, self).save(*args, **kwargs)