Menu
CoddyTech

Значения по умолчанию и пустые поля

Часть раздела Модели и панель администратора путешествия по Django на Coddy. Урок 3 из 23.

Сохраните книгу, не указав, прочитали ли вы её, и база данных откажет: NOT NULL constraint failed. Каждое поле обязательно, пока вы не укажете иное, и есть три варианта:

has_subtitles = models.BooleanField(default=True)
rating = models.DecimalField(max_digits=3, decimal_places=1, null=True, blank=True)
tagline = models.CharField(max_length=200, blank=True)

default — это значение, которое получает новая строка, если вы не указали никакого значения. null=True позволяет столбцу хранить NULL, которое Python считывает как None. blank=True позволяет формам и панели администратора принимать пустое поле.

Для числа или даты, которые могут быть вам неизвестны, нужны и null=True, и blank=True. Для текста требуется только blank=True: пустой текст хранится как "", а null создал бы два вида пустого значения. TextField — это текст без ограничения длины, например для длинного отзыва.

challenge icon

Задание

Легко

Сделай необязательные поля Book необязательными:

  • is_read начинается со значения False.
  • finished может быть пустым: у незаконченной книги нет даты.
  • Новое поле summary: длинный текст без ограничения длины, может быть пустым — так в Django задают текст.

Нажми Run, затем на вкладке Shell введи Book.objects.create(title="Emma", author="Jane Austen", year=1815, price="7.50") и открой вкладку Data.

Попробуйте сами

from django.db import models


class Book(models.Model):
    title = models.CharField(max_length=200)
    author = models.CharField(max_length=100)
    year = models.IntegerField()
    price = models.DecimalField(max_digits=6, decimal_places=2)
    is_read = models.BooleanField()
    finished = models.DateField()

Все уроки раздела Модели и панель администратора

Потренируйтесь самостоятельно: Песочница Django