Значения по умолчанию и пустые поля
Часть раздела Модели и панель администратора путешествия по 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 — это текст без ограничения длины, например длинная рецензия.
Задание
ЛегкоСделай необязательные поля Book необязательными:
is_readизначально имеет значениеFalse.finishedможет быть пустым: у незаконченной книги нет даты.- Добавь поле
summaryдля длинного текста без ограничения длины; его можно оставить пустым — будет сохранён пустой текст, а неNULL.
Нажми «Запустить», затем во вкладке Shell введи Book.objects.create(title="Emma", author="Jane Austen", year=1815, price="7.50"): будет выведено <Book: Book object (1)>, а не сообщение об ошибке.
Попробуйте сами
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()
Все уроки раздела Модели и панель администратора
1Ваша первая модель
Ваша первая модельТипы полейПотренируйтесь самостоятельно: Песочница Django