Типы данных и список полей модели Django

Опубликовано: 25 Февраля, 2022

Самая важная часть модели и единственная необходимая часть модели - это список полей базы данных, которые она определяет. Поля задаются атрибутами класса. Будьте осторожны, чтобы не выбирать имена полей, которые конфликтуют с API моделей, например очистить, сохранить или удалить.

Пример:

 из моделей импорта django.db

класс Музыкант (models.Model):
    first_name = models.CharField (max_length = 200)
    last_name = models.CharField (max_length = 200)
    инструмент = models.CharField (max_length = 200)

класс Альбом (models.Model):
    artist = models.ForeignKey (Музыкант, on_delete = models.CASCADE)
    name = models.CharField (max_length = 100)
    release_date = models.DateField ()
    num_stars = models.IntegerField ()

Настройка поля для хранения любого типа данных похожа на определение типа данных в C / C ++ для хранения определенного целого числа, char и т. Д. Поля в Django - это типы данных для хранения определенного типа данных. Например, для хранения целого числа будет использоваться IntegerField. Эти поля имеют встроенную проверку для определенного типа данных, то есть вы не можете хранить «abc» в IntegerField. Аналогично и для других полей. Этот пост посвящен основным полям, которые можно использовать в моделях Django.
Вот некоторые ключевые атрибуты, о которых следует знать, прежде чем начинать использовать Django Fields.

Типы полей

Каждое поле в модели должно быть экземпляром соответствующего класса Field. Django использует типы классов полей для определения нескольких вещей:

  • Тип столбца, который сообщает базе данных, какие данные следует хранить (например, INTEGER, VARCHAR, TEXT).
  • Виджет HTML по умолчанию для использования при отображении поля формы (например, <input type = ”text”>, <select>).
  • Минимальные требования к валидации, используемые в админке Django и в автоматически сгенерированных формах.

Django поставляется с десятками встроенных типов полей, которые можно использовать для сохранения любого типа данных, от числа до целого файла HTML. Вот список всех типов полей, используемых в Django.

Список типов данных и полей базовой модели

Имя поля Описание
АвтоПоле Это IntegerField, который автоматически увеличивается.
BigAutoField Это 64-битное целое число, очень похожее на AutoField, за исключением того, что оно гарантированно соответствует числам от 1 до 9223372036854775807.
BigIntegerField Это 64-битное целое число, очень похожее на IntegerField, за исключением того, что оно гарантированно соответствует числам от -9223372036854775808 до 9223372036854775807.
BinaryField Поле для хранения необработанных двоичных данных.
BooleanField Поле истина / ложь.
Виджет формы по умолчанию для этого поля - CheckboxInput.
CharField Поле для хранения текстовых значений.
DateField Дата, представленная в Python экземпляром datetime.date
Он используется для даты и времени, представленных в Python экземпляром datetime.datetime.
DecimalField Это десятичное число с фиксированной точностью, представленное в Python экземпляром Decimal.
DurationField Поле для хранения периодов времени.
EmailField Это CharField, который проверяет, является ли значение допустимым адресом электронной почты.
FileField Это поле для загрузки файлов.
FloatField Это число с плавающей запятой, представленное в Python экземпляром с плавающей запятой.
ImageField Он наследует все атрибуты и методы от FileField, но также проверяет, что загруженный объект является действительным изображением.
IntegerField Это целочисленное поле. Значения от -2147483648 до 2147483647 безопасны во всех базах данных, поддерживаемых Django.
GenericIPAddressField Адрес IPv4 или IPv6 в строковом формате (например, 192.0.2.30 или 2a02: 42fe :: 4).
NullBooleanField Подобно BooleanField, но допускает NULL как одну из опций.
PositiveIntegerField Подобно IntegerField, но должно быть либо положительным, либо нулевым (0).
PositiveSmallIntegerField Подобно PositiveIntegerField, но допускает значения только в определенной (зависящей от базы данных) точке.
SlugField Слизняк - это газетный термин. Слаг - это короткая метка для чего-либо, содержащая только буквы, цифры, подчеркивания или дефисы. Обычно они используются в URL-адресах.
SmallIntegerField Это похоже на IntegerField, но допускает значения только в определенной (зависящей от базы данных) точке.
Текстовое поле Большое текстовое поле. Виджет формы по умолчанию для этого поля - Textarea.
TimeField Время, представленное в Python экземпляром datetime.time.
URLField CharField для URL-адреса, подтвержденного URLValidator.
UUIDField Поле для хранения универсальных уникальных идентификаторов. Использует класс Python UUID. При использовании в PostgreSQL хранится в типе данных uuid, в противном случае - в char (32).

Поля отношений

Django также определяет набор полей, представляющих отношения.

Имя поля Описание
Внешний ключ Отношения "многие к одному". Требуется два позиционных аргумента: класс, к которому относится модель, и параметр on_delete.
ManyToManyField Отношения "многие ко многим". Требуется позиционный аргумент: класс, к которому относится модель, который работает точно так же, как и для ForeignKey, включая рекурсивные и ленивые отношения.
OneToOneField Индивидуальные отношения. Концептуально это похоже на ForeignKey с unique = True, но «обратная» сторона отношения будет напрямую возвращать один объект.

Внимание компьютерщик! Укрепите свои основы с помощью базового курса программирования Python и изучите основы.

Для начала подготовьтесь к собеседованию. Расширьте свои концепции структур данных с помощью курса Python DS. А чтобы начать свое путешествие по машинному обучению, присоединяйтесь к курсу Машинное обучение - базовый уровень.