Поле TextField
Поле TextField применяется в модели Django для хранения текстовых данных
неограниченного размера. В отличие от CharField, это поле не имеет
ограничения по длине и подходит для хранения больших объёмов текста.
При использовании в административной панели отображается в виде
многострочного текстового поля. В базу данных транслируется в тип TEXT.
Синтаксис
from django.db import models
class MyModel(models.Model):
field_name = models.TextField(**options)
Пример
Давайте создадим модель статьи с полем для полного содержания:
from django.db import models
class Article(models.Model):
title = models.CharField(max_length=200)
content = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.title
Теперь создадим несколько записей и сохраним их в базе данных:
from myapp.models import Article
from datetime import datetime
article1 = Article(
title="Introduction to Django",
content="Django is a high-level Python web framework that encourages rapid development and clean, pragmatic design."
)
article1.save()
article2 = Article(
title="Django Models",
content="Models are the single, definitive source of information about your data. They contain the essential fields and behaviors of the data you’re storing."
)
article2.save()
articles = Article.objects.all()
for article in articles:
print(article.title)
Результат выполнения кода:
"Introduction to Django"
"Django Models"
Пример
Извлечём содержимое статьи и выведем первые 50 символов:
from myapp.models import Article
article = Article.objects.get(title="Introduction to Django")
content_preview = article.content[:50] + "..."
print(content_preview)
Результат выполнения кода:
"Django is a high-level Python web framework that ..."
Параметры
Поле TextField принимает все стандартные параметры
полей моделей Django, а также специфичные:
- max_length - задаётся только для совместимости с формами, в БД ограничение не применяется;
- blank - если
True, поле может быть пустым в формах; - null - если
True, в базе данных будет храниться NULL; - default - значение по умолчанию для поля;
- db_collation - задаёт сортировку для текстовых данных.
Пример использования параметров:
from django.db import models
class Post(models.Model):
summary = models.TextField(max_length=500, blank=True)
body = models.TextField(null=True, default="No content yet")
notes = models.TextField(db_collation="utf8mb4_unicode_ci")
Смотрите также
-
поле
CharField,
которое используется для коротких строк -
поле
JSONField,
которое хранит структурированные данные в формате JSON -
поле
EmailField,
которое предназначено для хранения адресов электронной почты -
поле
URLField,
которое используется для хранения URL-адресов