Поле CharField

Поле CharField предназначено для хранения символьных строк в базе данных. В первый параметр мы передаем max_length - максимальную длину строки (обязательный аргумент). Во второй параметр мы можем передать blank - разрешает пустые значения в формах. Также поддерживаются параметры null (разрешает NULL в БД), default (значение по умолчанию) и choices (ограничение допустимых значений).

Синтаксис

pythonclass MyModel(models.Model):
  name = models.CharField(max_length=100)

Пример

Давайте создадим модель с полем CharField, которое хранит имя пользователя:

pythonfrom django.db import models

class User(models.Model):
  name = models.CharField(max_length=50)

  def __str__(self):
    return self.name

Теперь создадим нового пользователя и сохраним его:

pythonuser = User(name="John Doe")
user.save()

Пример

Используем поле CharField с ограничением выбора (choices):

pythonclass Person(models.Model):
  STATUS_CHOICES = [
    ('active', 'Активный'),
    ('inactive', 'Неактивный'),
  ]
  status = models.CharField(
    max_length=10,
    choices=STATUS_CHOICES,
    default='active'
  )

Создадим экземпляр модели со статусом 'inactive':

pythonperson = Person(status='inactive')
person.save()
print(person.status)

Результат выполнения кода:

python"inactive"

Пример

Установим поле CharField с параметром null=True и blank=True:

pythonclass Product(models.Model):
  description = models.CharField(
    max_length=200,
    null=True,
    blank=True
  )

Создадим продукт без описания:

pythonproduct = Product()
product.save()
print(product.description)

Результат выполнения кода:

pythonNone

Смотрите также

  • поле TextField,
    которое предназначено для хранения длинных текстов без ограничения длины
  • поле EmailField,
    которое является подклассом CharField с проверкой на корректный email
  • поле SlugField,
    которое наследуется от CharField и предназначено для хранения slug-строк
  • поле URLField,
    которое является подклассом CharField с проверкой на корректный URL