django入門 模型 part2

2022-05-09 05:57:09 字數 2822 閱讀 2132

完全翻譯自官方文件 

這章講資料庫相關

在settings.py的資料庫配置中預設是使用sqllite,如果只是用來練手那麼你不用修改資料庫的配置

如果要用mysql,就是下面的配置

databases =   

}

別忘了修改下配置檔案的時區和語言

language_code = '

zh-hans

' # django 1.10種要用zh-hans,如果用zh-cn會報錯

time_zone = '

asia/shanghai

'

python manage.py migrate

下面在應用中建立資料庫模型 polls/models.py

from django.db import

models

class

question(models.model):

question_text = models.charfield(max_length=200)

pub_date = models.datetimefield('

date published')

class

choice(models.model):

question = models.foreignkey(question, on_delete=models.cascade)

choice_text = models.charfield(max_length=200)

votes = models.integerfield(default=0)

django支援資料庫的外來鍵: 多對一,多對多,一對一

關於field的具體內容請參考 

'pools',

'suit',

'django.contrib.admin',

'django.contrib.auth',

'django.contrib.contenttypes',

'django.contrib.sessions',

'django.contrib.messages',

'django.contrib.staticfiles',

]suit這個應用是django admin的乙個擴充套件,可以讓django的admin介面更好看,推薦!!!

下面有幾個命令要說明一下

python manage.py makemigrations polls #在本地生成乙個檔案 ,記錄你的model的變動

python manage.py sqlmigrate polls 0001 # 詳細顯示出django根據這次修改的model.py檔案 實際要做的事,它只是列印一下內容,而不會實際去修改資料庫python manage.py migrate # 執行這個命令,你的資料庫就根據你的models.py完成修改了

python manager.py check # 檢查你的model.py

如果你要修改你的模型models.py 記住3個步驟

1. 修改你的models.py

2. 執行 python manage.py makemigrations

3. python manage.py migrate 應用修改

最好為你的每個模型新增__str__()方法,這會讓你的模型的輸出更加友好

不然可能是這樣的輸出

>>>question.objects.all()

]>

所以請新增__str__()方法

from django.db import

models

from django.utils.encoding import

python_2_unicode_compatible

@python_2_unicode_compatible

#相容python2

class

question(models.model):

#...

def__str__

(self):

return

self.question_text

@python_2_unicode_compatible

class

choice(models.model):

#...

def__str__

(self):

return self.choice_text

然後它會這麼顯示

#

make sure our __str__() addition worked.

>>>question.objects.all()

's up?>]>

django自帶管理後台,可以方便的檢視和修改資料庫內容

我們先建立後台介面的管理員賬戶

python manage.py createsuperuser  #根據提示輸入使用者名稱,郵箱,密碼

現在可以訪問後台介面了 

如果你想通過後台展示你的模型,修改應用裡的admin.py

from django.contrib import

admin

from .models import

question

admin.site.register(question)

本節完

動態規劃入門part2

例2 在這樣乙個arr陣列中12 3456 7 找出互不相臨的n個數,使這些數的和最大。依舊是乙個求最優解的動態規劃問題,求解的關鍵是找出每乙個狀態選和不選的指標函式。選 opt i opt i 2 arr i 不選 opt i opt i 1 遞迴出口 opt 1 arr 1 opt 2 max ...

程式設計練習 part2

一.題目 對於乙個給定的井字棋棋盤,請設計乙個高效演算法判斷當前玩家是否獲勝。給定乙個二維陣列board,代表當前棋盤,其中元素為1的代表是當前玩家的棋子,為0表示沒有棋子,為 1代表是對方玩家的棋子。測試樣例 1,0,1 1,1,1 1,1,0 返回 true 思路 對於井字棋的獲勝方式,有下面幾...

網路程式設計part2

五層協議 計算機1 計算機2 應用層 應用層 socket socket 傳輸層 段傳輸層 網路層包 網路層資料鏈路層 幀資料鏈路層 物理層 互動機 物理層 客戶端軟體send 服務端軟體recv 作業系統 作業系統 計算機硬體 物理介質 計算機硬體 客戶端軟體send 服務端軟體recv 作業系統...