Поле EmailField
Поле EmailField предназначено для хранения электронных адресов в моделях Django. Оно представляет собой подкласс CharField с дополнительной валидацией, которая проверяет корректность введенного email-адреса. По умолчанию поле имеет максимальную длину 254 символов, что соответствует стандартам RFC. При создании формы поле автоматически генерирует специальный виджет ввода.
Синтаксис
from django.db import models
class MyModel(models.Model):
email = models.EmailField(max_length=254, **options)
Параметры
Поле EmailField принимает все стандартные параметры CharField, а также дополнительные опции:
-
max_length- максимальная длина строки (по умолчанию254); -
blank- разрешает пустое значение (по умолчаниюFalse); -
null- разрешаетNULLв базе данных (по умолчаниюFalse); -
unique- делает значение уникальным (по умолчаниюFalse).
Пример
Давайте создадим модель пользователя с полем для электронной почты:
from 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
Пример
Создадим нового пользователя с электронной почтой:
from myapp.models import User
user = User.objects.create(
username="john_doe",
email="john@example.com"
)
print(user.email)
Результат выполнения кода:
"john@example.com"
Пример
Попробуем создать пользователя с некорректным адресом электронной почты:
from 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)
Результат выполнения кода:
{"email": ["Enter a valid email address."]}
Пример
Получим всех пользователей с определенным доменом электронной почты:
from myapp.models import User
users = User.objects.filter(email__icontains="@company.com")
for user in users:
print(f"{user.username}: {user.email}")
Результат выполнения кода:
"alice: alice@company.com"
"bob: bob@company.com"