Поле TextField

Поле TextField применяется в модели Django для хранения текстовых данных неограниченного размера. В отличие от CharField, это поле не имеет ограничения по длине и подходит для хранения больших объёмов текста. При использовании в административной панели отображается в виде многострочного текстового поля. В базу данных транслируется в тип TEXT.

Синтаксис

pythonfrom django.db import models

class MyModel(models.Model):
  field_name = models.TextField(**options)

Пример

Давайте создадим модель статьи с полем для полного содержания:

pythonfrom 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

Теперь создадим несколько записей и сохраним их в базе данных:

pythonfrom 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)

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

python"Introduction to Django"
"Django Models"

Пример

Извлечём содержимое статьи и выведем первые 50 символов:

pythonfrom myapp.models import Article

article = Article.objects.get(title="Introduction to Django")
content_preview = article.content[:50] + "..."
print(content_preview)

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

python"Django is a high-level Python web framework that ..."

Параметры

Поле TextField принимает все стандартные параметры полей моделей Django, а также специфичные:

Пример использования параметров:

pythonfrom 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-адресов