进入django编程中我们建立的app文件夹下的models.py文件中
为了举例说明,让我们把Book模块修改成允许 publication_date为空。修改后的代码如下:
#blank=True 允许输入一个空值
#null=True 指定一个字段允许为NULL
from django.db import models
from django.contrib import admin
class Book(models.Model): title = models.CharField(max_length=100) authors = models.ManyToManyField(Author) publisher = models.ForeignKey(Publisher) publication_date = models.DateField(blank=True, null=True )
添加null=True比添加blank=True复杂。因为null=True改变了数据的语义,即改变了CREATE TABLE语句,把publication_date字段上的NOT NULL删除了。 要完成这些改动,我们还需要更新数据库。
出于某种原因,Django不会尝试自动更新数据库结构。所以你必须执行ALTER TABLE语句将模块的改动更新至数据库。 像先前那样,你可以使用manage.py dbshell进入数据库服务环境。 以下是在这个特殊情况下如何删除NOT NULL:
ALTER TABLE books_book ALTER COLUMN publication_date DROP NOT NULL;
(注意:以上SQL语法是PostgreSQL特有的。)