Для определения моделей мы можем использовать следующие типы полей:
BinaryField(): хранит бинарные данные
BooleanField(): хранит значение True или False (0 или 1)
NullBooleanField(): хранит значение True или False или Null
DateField(): хранит дату
TimeField(): хранит время
DateTimeField(): хранит дату и время
DurationField(): хранит период времени
AutoField(): хранит целочисленное значение, которое автоматически инкрементируется, обычно применяется для первичных ключей
BigAutoField(): хранит 64-битное целочисленное значение, но в отличие от AutoField гарантирует, что число входит в диапазон от 1 до 9223372036854775807.
SmallAutoField(): хранит 16-битное целочисленное значение в диапазоне от 1 до 32767
BigIntegerField(): представляет число - значение типа Number, которое укладывается в диапазон от -9223372036854775808 до 9223372036854775807. В зависимости от выбранной СУБД диапазон может немного отличаться
DecimalField(decimal_places=X, max_digits=Y): представляет значение типа Number, которое имеет максимум X разрядов и Y знаков после запятой
FloatField(): хранит, значение типа Number, которое представляет число с плавающей точкой
IntegerField(): хранит значение типа Number, которое представляет целочисленное значение
PositiveIntegerField(): хранит значение типа Number, которое представляет положительное целочисленное значение (от 0 до 2147483647)
PositiveBigIntegerField(): хранит значение типа Number, которое представляет положительное 64-битное целочисленное значение (от 0 до 9223372036854775807)
PositiveSmallIntegerField(): хранит значение типа Number, которое представляет небольшое положительное целочисленное значение (от 0 до 32767)
SmallIntegerField(): хранит значение типа Number, которое представляет небольшое целочисленное значение (от -32768 до 32767)
CharField(max_length=N): хранит строку длиной не более N символов
TextField(): хранит строку неопределенной длины
EmailField(): хранит строку, которая представляет email-адрес. Значение автоматически валидируется встроенным валидатором EmailValidator
FileField(): хранит строку, которая представляет имя файла
FilePathField(): хранит строку, которая представляет путь к файлу длиной в 100 символов
ImageField(): хранит строку, которая представляет данные об изображении
GenericIPAddressField(): хранит строку, которая представляет IP-адрес в формате IP4v или IP6v
SlugField(): хранит строку, которая может содержать только буквы в нижнем регистре, цифры, дефис и знак подчеркивания
URLField(): хранит строку, которая представляет валидный URL-адрес
UUIDField(): хранит строку, которая представляет UUID-идетификатор
JSONField(): хранит данные в формате JSON, которая представляет UUID-идетификатор
Таблица сопоставления полей с типами в различных СУБД:
Тип | SQLite | MySQL | PostgreSQL | Oracle |
BinaryField() | BLOB NOT NULL | longblob NOT NULL | bytea NOT NULL | BLOB NULL |
BooleanField() | bool NOT NULL | bool NOT NULL | boolean NOT NULL | NUMBER(1) NOT NULL CHECK("Значение" IN(0,1)) |
NullBooleanField() | bool NULL | bool NULL | boolean NULL | NUMBER(1) NOT NULL CHECK(("Значение" IN(0,1)) OR ("Значение" IS NULL)) |
DateField() | date NULL | date NULL | date NULL | DATE NOT NULL |
TimeField() | time NULL | time NULL | time NULL | TIMESTAMP NOT NULL |
DateTimeField() | datetime NULL | datetime NULL | timestamp NULL | TIMESTAMP NOT NULL |
DurationField() | bigint NOT NULL | bigint NOT NULL | interval NOT NULL | INTERVAL DAY(9) TO SECOND(6) NOT NULL |
AutoField() | integer NOT NULL AUTOINCREMENT | integer AUTO_INCREMENT NOT NULL | serial NOT NULL | NUMBER(11) NOT NULL |
BigIntegerField | bigint NOT NULL | bigint NOT NULL | bigint NOT NULL | NUMBER(19) NOT NULL |
DecimalField(decimal_places=X, max_digits=Y) | decimal NOT NULL | numeric(X, Y) NOT NULL |
numeric(X, Y) NOT NULL | NUMBER(10, 3) NOT NULL |
FloatField | real NOT NULL | double precision NOT NULL | double precision NOT NULL |
DOUBLE PRECISION NOT NULL |
IntegerField | integer NOT NULL | integer NOT NULL | integer NOT NULL | NUMBER(11) NOT NULL |
PositiveIntegerField | integer unsigned NOT NULL | integer UNSIGNED NOT NULL |
integer NOT NULL CHECK ("Значение" > 0) | NUMBER NOT NULL CHECK ("Значение" > 0) |
PositiveSmallIntegerField | smallint unsigned NOT NULL | smallint UNSIGNED NOT NULL |
smallint NOT NULL CHECK ("Значение" > 0) | NUMBER(11) NOT NULL CHECK ("Значение" > 0) |
SmallIntegerField | smallint NOT NULL | smallint NOT NULL |
smallint NOT NULL | NUMBER(11) NOT NULL |
CharField(max_length=N) | varchar(N) NOT NULL | varchar(N) NOT NULL | varchar(N) NOT NULL | NVARCHAR2(N) NULL |
TextField() | text NOT NULL | longtext NOT NULL | text NOT NULL | NCLOB NULL |
EmailField() | varchar(254) NOT NULL | varchar(254) NOT NULL | varchar(254) NOT NULL | NVARCHAR2(254) NULL |
FileField() | varchar(100) NOT NULL | varchar(100) NOT NULL | varchar(100) NOT NULL | NVARCHAR2(100) NULL |
FilePathField() | varchar(100) NOT NULL | varchar(100) NOT NULL | varchar(100) NOT NULL | NVARCHAR2(100) NULL |
ImageField() | varchar(100) NOT NULL | varchar(100) NOT NULL | varchar(100) NOT NULL | NVARCHAR2(100) NULL |
GenericIPAddressField() | char(39) NOT NULL | char(39) NOT NULL | inet NOT NULL | VARCHAR2(39) NULL |
SlugField() | varchar(50) NOT NULL | varchar(50) NOT NULL | varchar(50) NOT NULL | NVARCHAR2(50) NULL |
URLField() | varchar(200) NOT NULL | varchar(200) NOT NULL | varchar(200) NOT NULL | NVARCHAR2(200) NULL |
UUIDField() | char(32) NOT NULL | char(32) NOT NULL | uuid NOT NULL | VARCHAR2(32) NULL |
JSONField() | jsonb |