一、如果models.py文件為時(shí):
1
|
timestamp = models.DateTimeField('保存日期') |
會(huì)提示:
1
2
3
4
5
6
|
(env8) D:\Desktop\env8\Scripts\mysite>python manage.py makemigrations You are trying to add a non-nullable field 'timestamp' to article without a defa ult; we can't do that (the database needs something to populate existing rows). Please select a fix: 1) Provide a one-off default now (will be set on all existing rows) 2) Quit, and let me add a default in models.py |
輸入:1 (這里要求你設(shè)置新建字段的默認(rèn)值,它會(huì)在新建這個(gè)字段的同時(shí)把默認(rèn)值也添加上去,)Select an option: 1
1
2
3
4
|
Please enter the default value now, as valid Python The datetime and django.utils.timezone modules are available, so you can do e.g. timezone.now() >>> |
這里面不好修改
可以
1
2
3
4
5
|
(env8) D:\Desktop\env8\Scripts\mysite>python manage.py shell (env8) D:\Desktop\env8\Scripts\mysite>from django.db import connection (env8) D:\Desktop\env8\Scripts\mysite>cursor=connection.cursor() (env8) D:\Desktop\env8\Scripts\mysite>cursor.execute('ALTER TABLEArticle add column timestamp varchar(100) default 0') |
二、如果models.py文件為時(shí):
1
2
|
timestamp = models.DateTimeField('保存日期',default=timezone.now,blank=False, null=False) timestamp = models.DateTimeField('保存日期',default=timezone.now,blank=True, null=True) |
blank
設(shè)置為True時(shí),字段可以為空。設(shè)置為False時(shí),字段是必須填寫的。字符型字段CharField和TextField是用空字符串來(lái)存儲(chǔ)空值的。如果為True,字段允許為空,默認(rèn)不允許.
null
設(shè)置為True時(shí),django用Null來(lái)存儲(chǔ)空值。日期型、時(shí)間型和數(shù)字型字段不接受空字符串。所以設(shè)置IntegerField,DateTimeField型字段可以為空時(shí),需要將blank,null均設(shè)為True。如果為True,空值將會(huì)被存儲(chǔ)為NULL,默認(rèn)為False。如果想設(shè)置BooleanField為空時(shí)可以選用NullBooleanField型字段。
1
2
|
(env8) D:\Desktop\env8\Scripts\mysite>python manage.py makemigrations就不會(huì)有下面的提示 (env8) D:\Desktop\env8\Scripts\mysite>python manage.py migrate 就行了中間不會(huì)設(shè)置數(shù)據(jù)類型(很容易出錯(cuò))(若要設(shè)置默認(rèn)值) |
三、數(shù)據(jù)庫(kù)設(shè)計(jì)是整個(gè)網(wǎng)站開發(fā)的核心
補(bǔ)充:timestamp = models.DateTimeField('保存日期')
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
(env8) D:\Desktop\env8\Scripts\mysite>python manage.py makemigrations You are trying to add a non-nullable field 'timestamp' to article without a defa ult; we can't do that (the database needs something to populate existing rows). Please select a fix: 1) Provide a one-off default now (will be set on all existing rows) 2) Quit, and let me add a default in models.py Select an option: 1 Please enter the default value now, as valid Python The datetime and django.utils.timezone modules are available, so you can do e.g. timezone.now() >>> '2017-12-16 05:04:31.000'(添加字段的數(shù)據(jù)類型格式) Migrations for 'blog': 0002_article_timestamp.py: - Add field timestamp to article (env8) D:\Desktop\env8\Scripts\mysite>python manage.py migrate Operations to perform: Synchronize unmigrated apps: staticfiles, ckeditor_uploader, messages, ckedito r, bootstrap3 Apply all migrations: admin, blog, contenttypes, auth, sessions Synchronizing apps without migrations: Creating tables... Running deferred SQL... Installing custom SQL... Running migrations: Rendering model states... DONE Applying blog.0002_article_timestamp...D:Desktop\env8\lib\site-packa ges\django\db\models\fields\__init__.py:1474: RuntimeWarning: DateTimeField Arti cle.timestamp received a naive datetime (2017-12-16 05:04:31) while time zone su pport is active. RuntimeWarning) OK (env8) D:\Desktop\env8\Scripts\mysite> |
以上這篇django 在原有表格添加或刪除字段的實(shí)例就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持服務(wù)器之家。
原文鏈接:https://blog.csdn.net/JackLiu16/article/details/78819194