Поле EmailField

Поле EmailField предназначено для хранения электронных адресов в моделях Django. Оно представляет собой подкласс CharField с дополнительной валидацией, которая проверяет корректность введенного email-адреса. По умолчанию поле имеет максимальную длину 254 символов, что соответствует стандартам RFC. При создании формы поле автоматически генерирует специальный виджет ввода.

Синтаксис

pythonfrom django.db import models

class MyModel(models.Model):
  email = models.EmailField(max_length=254, **options)

Параметры

Поле EmailField принимает все стандартные параметры CharField, а также дополнительные опции:

Пример

Давайте создадим модель пользователя с полем для электронной почты:

pythonfrom django.db import models

class User(models.Model):
  username = models.CharField(max_length=100)
  email = models.EmailField(unique=True)
  created_at = models.DateTimeField(auto_now_add=True)

  def __str__(self):
    return self.username

Пример

Создадим нового пользователя с электронной почтой:

pythonfrom myapp.models import User

user = User.objects.create(
  username="john_doe",
  email="john@example.com"
)
print(user.email)

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

python"john@example.com"

Пример

Попробуем создать пользователя с некорректным адресом электронной почты:

pythonfrom myapp.models import User
from django.core.exceptions import ValidationError

try:
  user = User.objects.create(
    username="jane_doe",
    email="invalid-email"
  )
except ValidationError as e:
  print(e.message_dict)

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

python{"email": ["Enter a valid email address."]}

Пример

Получим всех пользователей с определенным доменом электронной почты:

pythonfrom myapp.models import User

users = User.objects.filter(email__icontains="@company.com")
for user in users:
  print(f"{user.username}: {user.email}")

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

python"alice: alice@company.com"
"bob: bob@company.com"

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

  • поле CharField,
    которое хранит строки произвольной длины
  • поле TextField,
    которое предназначено для больших текстов
  • поле URLField,
    которое хранит веб-адреса
  • поле SlugField,
    которое используется для создания ЧПУ