中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

models.py怎么在Django中使用

發布時間:2021-04-13 17:56:41 來源:億速云 閱讀:302 作者:Leah 欄目:開發技術

這期內容當中小編將會給大家帶來有關models.py怎么在Django中使用,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

編寫 models.py 文件

from django.db import models
# Create your models here.
class User_info(models.Model):
 username = models.CharField(max_length=25,verbose_name='用戶名')
 password = models.CharField(max_length=25,verbose_name='密碼')
 age = models.IntegerField()
 e_mail = models.EmailField()
 create_time = models.DateTimeField()
 update_time = models.DateTimeField()

字段類型

一般數據庫中字段類型大概5種(字符串/數字/浮點型/時間類型/布爾類型),但Django為了在后臺admin中可以操作數據庫,同時為了限制在admin中對數據庫的無效操作,Model中設置了很多種數據類型。

1、models.AutoField  自增列=int(11)
  如果沒有的話,默認會生成一個名稱為id的列,如果要顯示的定義一個自增列,必須把該列設置為主鍵(primary_key=True)
2、models.CharField  字符串類型字段 必須加max_length參數
3、models.BooleanField 布爾類型字段=tinyint(1) 不能為空,Blank=True
4、models.ComaSeparatedIntegerField  用逗號分割的數字類型=varchar 繼承CharField,所以必須加max_lenght參數
5、models.DateField  日期字段類型date
  參數auto_now=True表示每次更新都會更新這個時間;參數auto_now_add表示只是第一次創建時添加,之后的更新不再改變
6、models.DateTimeField  日期字段類型datetime 同DateField的參數
7、models.Decimal  十進制小數類型=decimal
  必須指定整數位max_digits和小數位decimal_places
8、models.EmailField  字符串類型(正則表達式郵箱)=varchar 對字符串進行正則表達式驗證
9、models.FloatField  浮點類型=double
10、models.IntegerField  整形
11、models.BigIntegerField 長整形
  integer_field_ranges = {
    'SmallIntegerField': (-32768, 32767),
    'IntegerField': (-2147483648, 2147483647),
    'BigIntegerField': (-9223372036854775808, 9223372036854775807),
    'PositiveSmallIntegerField': (0, 32767),
    'PositiveIntegerField': (0, 2147483647),
  }
12、models.IPAddressField  字符串類型(ip4正則表達式)
13、models.GenericIPAddressField  字符串類型(ip4和ip6是可選的)
  參數protocol可以是:both、ipv4、ipv6 驗證時,會根據設置進行報錯
14、models.NullBooleanField  允許為空的布爾類型
15、models.PositiveIntegerFiel  正Integer
16、models.PositiveSmallIntegerField  正smallInteger
17、models.SlugField  減號、下劃線、字母、數字
18、models.SmallIntegerField  數字
  數據庫中的字段有:tinyint、smallint、int、bigint
19、models.TextField  字符串=longtext
20、models.TimeField  時間 HH:MM[:ss[.uuuuuu]]
21、models.URLField  字符串類型,地址正則表達式
22、models.BinaryField 二進制
23、models.ImageField 圖片
24、models.FilePathField 文件

執行命令:

# 執行以下命令,記錄我們對models.py的所有改動
python manage.py makemigrations

執行后生成如下文件

models.py怎么在Django中使用

# Generated by Django 2.1.2 on 2018-12-11 11:39
from django.db import migrations, models
class Migration(migrations.Migration):
 initial = True
 dependencies = [
 ]
 operations = [
  migrations.CreateModel(
   name='User_info',
   fields=[
    ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
    ('username', models.CharField(max_length=25, verbose_name='用戶名')),
    ('password', models.CharField(max_length=25, verbose_name='密碼')),
    ('age', models.IntegerField()),
    ('e_mail', models.EmailField(max_length=254)),
    ('create_time', models.DateTimeField()),
    ('update_time', models.DateTimeField()),
   ],
  ),
 ]

代碼如下

#如下 這條命令的主要作用就是把這些改動作用到數據庫也就是執行migrations里面新改動的遷移文件更新數據庫,比如創建數據表,或者增加字段屬性
python manage.py migrate

執行該命令后 數據庫生成如下數據庫表

models.py怎么在Django中使用

如上圖得到的表名 是以應用名命名的,但是不是我們想要的怎么辦了,增加兩行代碼

如下:

from django.db import models
# Create your models here.
from django.db import models
class User_info(models.Model):
 username = models.CharField(max_length=25,verbose_name='用戶名')
 password = models.CharField(max_length=25,verbose_name='密碼')
 age = models.IntegerField()
 e_mail = models.EmailField()
 create_time = models.DateTimeField()
 update_time = models.DateTimeField()
 class Meta:
  db_table = 'User_info'

修改代碼重新執行

# 執行以下命令,記錄我們對models.py的所有改動
python manage.py makemigrations

此時新生成了 一個migrations 文件

此時可以針對 新的文件進行執行

python manage.py migrate ModelMysql 0002_auto_20181211_1150

models.py怎么在Django中使用

查看數據庫表得到新建的數據表

models.py怎么在Django中使用

python manage.py makemigrations這個命令是記錄我們對models.py的所有改動,并且將這個改動遷移到migrations這個文件下生成一個文件例如:0001文件,如果你接下來還要進行改動的話可能生成就是另外一個文件不一定都是0001文件,但是這個命令并沒有作用到數據庫,這個剛剛我們在上面的操作過程之后已經看到了。

而當我們執行python manage.py migrate 命令時 這條命令的主要作用就是把這些改動作用到數據庫也就是執行migrations里面新改動的遷移文件更新數據庫,比如創建數據表,或者增加字段屬性

另外一個需要注意的是這兩個命令默認情況下是作用于全局,也就是對所有最新更改的models或者migrations下面的遷移文件進行對應的操作,如果要想僅僅對部分app進行作用的話 則執行如下命令:

python manage.py makemigrations appname
python manage.py migrate appname

如果要想精確到某一個遷移文件則可以使用:

python manage.py migrate appname 文件名

遇到問題:

1、

No migrations to apply(django不能創建數據庫中的表的問題)

如下圖:

models.py怎么在Django中使用

解決辦法:

第一步:

刪除該app名字下的migrations下除__init__.py外的文件。

第二步:

進入數據庫,找到django_migrations的表,刪除該app名字的所有記錄。

models.py怎么在Django中使用

第三步:執行下面這兩條命令:(在項目目錄下)

python manage.py makemigrations

python manage.py migrate

原因:

django_migrations表記錄著數據庫的對應表的修改記錄。

每次修改后,都執行第三步的命令,然后在第一步的文件夾下生成修改的文件,django_migrations表記錄修改的變更過程。

2、

Warning: (3135, "'NO_ZERO_DATE', 'NO_ZERO_IN_DATE' and 'ERROR_FOR_DIVISION_BY_ZERO' sql modes should be used with strict mode. They will be merged with strict mode in a future release.")
result = self._query(query)

models.py怎么在Django中使用

修改options 如下:

# MySQL adil 密碼:helloyyj
DATABASES = {
 'default':{
  'ENGINE':'django.db.backends.mysql',
  'HOST':'127.0.0.1',
  'PORT':'3306',
  'NAME':'pyweb', # 數據庫名
  'USER':'adil',
  'PASSWORD':'helloyyj',
  'OPTIONS':{
   'sql_mode': 'traditional'
  },
 }
}

上述就是小編為大家分享的models.py怎么在Django中使用了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

郑州市| 柳州市| 兴山县| 澜沧| 邢台市| 五峰| 巴南区| 册亨县| 洛阳市| 保德县| 四川省| 宝丰县| 扶风县| 吴江市| 富蕴县| 常州市| 广东省| 天祝| 沙洋县| 凯里市| 杭锦后旗| 新乡县| 南川市| 三亚市| 江华| 双江| 岐山县| 西吉县| 永昌县| 股票| 丽江市| 云龙县| 北流市| 霍邱县| 广丰县| 达尔| 南江县| 永定县| 濉溪县| 报价| 老河口市|