默认值和空字段
本课属于 Coddy Django 学习旅程的“模型和管理后台”单元。第 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()
模型和管理后台中的所有课
自己练习: Django 在线编辑器