📝 Django

Поля моделей Django

P
Автор
Pyland
📅
Опубликовано
30.06.2026
⏱️
Время чтения
1 мин
👁️
Просмотров
81
🌱
Уровень
Начальный
🐦 💼 ✈️

Модель — Python-класс, описывающий таблицу в БД. Каждое поле = колонка.

Основные типы полей

from django.db import models

class Task(models.Model):
    # Текст
    title       = models.CharField(max_length=200)      # VARCHAR
    description = models.TextField(blank=True)           # TEXT
    slug        = models.SlugField(max_length=200, unique=True)

    # Числа
    priority    = models.IntegerField(default=0)
    price       = models.DecimalField(max_digits=10, decimal_places=2)
    rating      = models.FloatField(default=0.0)

    # Логика
    is_done     = models.BooleanField(default=False)

    # Дата и время
    created_at  = models.DateTimeField(auto_now_add=True)  # при создании
    updated_at  = models.DateTimeField(auto_now=True)       # при обновлении
    due_date    = models.DateField(null=True, blank=True)

    # Файлы
    image       = models.ImageField(upload_to='tasks/', blank=True)
    document    = models.FileField(upload_to='docs/', blank=True)

Параметры полей

Параметр Описание
null=True Разрешить NULL в БД
blank=True Разрешить пустое значение в форме
default=... Значение по умолчанию
unique=True Уникальность в таблице
db_index=True Создать индекс
verbose_name='...' Человекочитаемое имя

choices — список допустимых значений

class Task(models.Model):
    class Status(models.TextChoices):
        TODO       = 'todo',       'К выполнению'
        IN_PROGRESS = 'in_progress', 'В работе'
        DONE       = 'done',       'Выполнено'

    status = models.CharField(
        max_length=20,
        choices=Status.choices,
        default=Status.TODO,
    )

# Использование
task = Task.objects.create(title="Test", status=Task.Status.TODO)
task.get_status_display()  # 'К выполнению'

Метаданные модели

class Task(models.Model):
    title = models.CharField(max_length=200)
    created_at = models.DateTimeField(auto_now_add=True)

    class Meta:
        ordering = ['-created_at']      # сортировка по умолчанию
        verbose_name = 'задача'
        verbose_name_plural = 'задачи'
        db_table = 'custom_tasks'       # имя таблицы

    def __str__(self):
        return self.title

Ваша реакция на статью

💬 Комментарии (0)

🔐 Войдите в систему, чтобы оставить комментарий
🚪 Войти
💭

Комментариев пока нет

Станьте первым, кто поделится мнением об этой статье!

🔗 Похожие

Похожие статьи

Продолжите изучение с этими материалами

📝

pytest-django: тестирование Django

Охватываемые темы: Установка, @pytest.mark.djangodb, Фикстуры, Тестирование views.

📅 30.06.2026 👁️ 130
📝

Django: Теги шаблонов

Теги шаблонов — это логика внутри HTML. В отличие от {{ переменная }}, которая только...

📅 30.06.2026 👁️ 81
📝

Django: Статические файлы

Статические файлы — CSS, JavaScript, изображения, шрифты. Django обрабатывает их особым образом: в разработке раздаёт...

📅 30.06.2026 👁️ 71

Понравилась статья?

Подпишитесь на наши обновления и получайте новые статьи первыми. Развивайтесь вместе с PyLand!