您现在的位置是:门户> 编程语言> Python

django 在原有表格添加或删除字段的实例
2022-02-01 204人围观 0条评论
简介今天小编就为大家分享一篇django 在原有表格添加或删除字段的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

    一、如果models.py文件为时:

    timestamp = models.DateTimeField('保存日期')

    会提示:

    (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 (这里要求你设置新建字段的默认值,它会在新建这个字段的同时把默认值也添加上去,)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()
    >>>
    

    这里面不好修改

    可以

    (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文件为时:

    timestamp = models.DateTimeField('保存日期',default=timezone.now,blank=False, null=False)
    timestamp = models.DateTimeField('保存日期',default=timezone.now,blank=True, null=True)
    

    blank

    设置为True时,字段可以为空。设置为False时,字段是必须填写的。字符型字段CharField和TextField是用空字符串来存储空值的。如果为True,字段允许为空,默认不允许.

    null

    设置为True时,django用Null来存储空值。日期型、时间型和数字型字段不接受空字符串。所以设置IntegerField,DateTimeField型字段可以为空时,需要将blank,null均设为True。如果为True,空值将会被存储为NULL,默认为False。如果想设置BooleanField为空时可以选用NullBooleanField型字段。

    (env8) D:\Desktop\env8\Scripts\mysite>python manage.py makemigrations就不会有下面的提示
    (env8) D:\Desktop\env8\Scripts\mysite>python manage.py migrate 就行了中间不会设置数据类型(很容易出错)(若要设置默认值)

    三、数据库设计是整个网站开发的核心

    补充:timestamp = models.DateTimeField('保存日期')

    (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'(添加字段的数据类型格式)
    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 在原有表格添加或删除字段的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

分享:

文章评论

    • wxpython 学习笔记 第一天
    • python文本数据处理学习笔记详解