Модель — 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)
Комментариев пока нет
Станьте первым, кто поделится мнением об этой статье!