Django定義和使用模型

2021-09-19 10:14:55 字數 3096 閱讀 5710

學習動力

我今年的專案主要基於django開發,學習了很多新東西。我很多時候,擔心日後會忘記很多有趣的東西,我想寫下筆記。但是從哪個方面入手,我沒有思路。所以檢視了一些書,根據目錄進行總結。希望自己不會錯過什麼!

定義模型

為什麼使用orm

django豐富的變數型別

為了簡單,我直接編寫和官網一樣的例子。

from django.db import models

class person(models.model):

first_name = models.charfield(max_length=30)

last_name = models.charfield(max_length=30)

from __future__ import unicode_literals

from django.db import migrations, modelsclass

migration(migrations.migration):

dependencies = [

]

operations = [

migrations.createmodel(

name='person',

fields=[

('id', models.autofield(verbose_name='id', serialize=false, auto_created=true, primary_key=true)),

('first_name', models.charfield(max_length=30)),

('last_name', models.charfield(max_length=30)),

],

),

]

從上面的**可以看出,系統不僅僅給生成first_name,last_name還有id,它的型別是autofield類,既然學習的是型別的定義,那我現在可以在自己的腦海中留下乙個思維圖。

好啦!我現在有幾個問題:

1)我一定要生成id嗎?

2)我可以修改charfield的max_length屬性,還能修改什麼屬性?

3)migrations.migration又是乙個什麼樣子的類呢?

現在執行migrate然後檢視sqlite生成的**。

我們來試試看,如何設定meta類裡面的屬性,來改變我們的表名。

class person(models.model):

#rest of code

class meta:

db_table = 'new_table'

執行makemigrations我們會在終端得到下面的資訊。

檢視我們的0002檔案,得到如下的內容。

from __future__ import unicode_literals

from django.db import migrations, models

class migration(migrations.migration):

dependencies = [

]

operations = [

migrations.altermodeltable(

name='person',

table='new_table',

),

]

從上面生成的**可以看出,django並不是從新生成資料庫的各個域,只是修改名字而已,與我們平時使用sql語句的做法應該是一致的。繼續執行migrate我們檢視生成的sql語句如下:

create table "new_table" ("id" integer not null primary key autoincrement, "first_name" varchar(30) not null, "last_name" varchar(30) not null);
的確,是從新改寫了表名,我們得到了新的表名,那麼如果裡面已經存有資料,該錶名會刪除資料嗎?為了,進一步測試,我們先把這個類註冊到admin中。

from django.contrib import admin

from .models import person

admin.site.register(person)

記住,別忘記建立管理員賬戶。建立後就可以在管理員裡面增加資料到person類啦。

然後,我們再修改meta的名字,看看資料是否會被刪除。

現在,資料為這個。我們試著從新把表名改了(改回系統預設的)

]我們這次,檢視到系統是更加第二次修改的記錄進行的,我們繼續看看我們的資料是否丟失。

資料還在,說明我們的django是會保護我們的資料的,我們可以放心的去做啦。

使用模型

總結

django 定義模型

字段型別 字段選項 關係可以維護遞迴的關聯關係,使用 self 指定,詳見 自關聯 用一訪問多 物件.模型類小寫 set bookinfo.heroinfo set用一訪問一 物件.模型類小寫 heroinfo.bookinfo訪問id 物件.屬性 id heroinfo.book id class...

Django模型類定義

資料庫表名 可通過db table指明資料庫表名。關於主鍵 django會為表建立自動增長的主鍵列,每個模型只能有乙個主鍵列,如果使用選項設定某屬性為主鍵列後django不會再建立自動增長的主鍵列。預設建立的主鍵列屬性為id,可以使用pk代替,pk全拼為primary key。屬性命名限制 字段型別...

Django 模型之定義屬性

django 模型之定義屬性 django根據屬性的型別確定以下資訊 django會為表建立自動增長的主鍵列,每個模型只能有乙個主鍵列,如果使用選項設定某屬性為主鍵列後django不會再建立自動增長的主鍵列。預設建立的主鍵列屬性為id,可以使用pk代替,pk全拼為primary key。注意 pk是...