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=[]
AutoField
Счетчик
BigIntegerField
64-разрядное, длинное число.
BooleanField
Логическое поле
is_done = models.BooleanField(
default=False,
db_index=True,
verbose_name="done",
)
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
(**kwargs)Поле с датой
Наследник Field
auto_now=False - булево, автоматический прописывать текущее время при сохранении
auto_now_add=False - булево, автоматический прописывать текущее время при добавлении
class Good(models.Model):
updated = models.DateField(auto_now=True)
DateTimeField
Поле с датой и временем
Наследник DateField
created = models.DateField(auto_now_add=True)
updated = models.DateField(auto_now=True)
EmailField
(**kwargs)Поле с электронной почтой
Наследник CharField
max_length = 254
email = models.EmailField()
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
Интернет адрес файла
FloatField
Число с плавающей точкой
GenericIPAddressField
Поле с IPv4 или IPv6 адресом
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
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
Поле с IPv4 адресом
Warning
deprecated, use GenericIPAddressField
PositiveIntegerField
32-разрядное, положительное число
PositiveSmallIntegerField
16-разрядное положительное число
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)
SmallIntegerField
16-разрядное положительное число
TextField
Текстовое поле
Наследник Field
description = models.TextField()
TimeField
Поле со временем
URLField
(**kwargs)Поле с интернет адресом
Наследник CharField
max_length = 200