摘要:希望自己不會錯過什么定義模型為什么使用豐富的變量類型為了簡單,我直接編寫和官網一樣的例子。我直接使用命令的話,我們可以查看里面有個目錄。
學習動力
我今年的項目主要基于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)
我直接使用makemigrations命令的話,我們可以查看myapp里面有個migrates目錄。
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生成的表格。
CREATE TABLE "myapp_person" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "first_name" varchar(30) NOT NULL, "last_name" varchar(30) NOT NULL);
現在又有幾個問題:
1)為什么表被命名為myapp_person,我們并沒有在哪設置這個名字啊?
2)我們能否使用別的域作為主鍵?
3)我們能否自定義表名?
答案如下:
1),3) 可以參考這里
我們來試試看,如何設置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 = [ ("myapp", "0001_initial"), ] 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的名字,看看數據是否會被刪除。
現在,數據為這個。我們試著從新把表名改了(改回系統默認的)
class Migration(migrations.Migration): dependencies = [ ("myapp", "0002_auto_20151213_0903"), ] operations = [ migrations.AlterModelTable( name="person", table="myapp_person", ), ]
我們這次,查看到系統是更加第二次修改的記錄進行的,我們繼續看看我們的數據是否丟失。
數據還在,說明我們的django是會保護我們的數據的,我們可以放心的去做啦。
使用模型
總結
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/37660.html
摘要:在里寫一個數據庫驅動的應用的第一步是定義模型,也就是數據庫結構設計和附加的其它元數據。模型元數據是任何不是字段的東西,例如排序選項數據庫表名單數和復數名稱和。 Django 框架主要關注的是模型(Model)、模板(Template)和視圖(Views),稱為MTV模式。 它們各自的職責如下: 層次 職責 模型(Model),即數據存取層 處理與數據相關的所有事務: 如何存取...
摘要:編程從入門到實踐筆記。執行命令后,項目的根目錄下會多出一個名為的數據庫文件。下面創建一個主題類用戶學習的主題返回模型的字符串表示類是中的一個定義了模型基本功能的類。這種交互式環境稱為,常用語測試項目和排除故障。 《Python編程:從入門到實踐》筆記。從本篇開始將是該書的最后一個項目,將用3篇文章來介紹Django的基礎。完成一個學習筆記的小網站。 1. 前言 在本篇中,我們將: 用...
摘要:源網頁說明文檔所有關于你應該且必須知道的。性能和優化概述的兼容性旨在兼容多種不同版本的支持的兼容性地理框架打算成為世界級的地理框架。其目標是盡可能簡單地構建應用程序并利用空間使能數據的功能。 源網頁:https://docs.djangoproject.co... django說明文檔 所有關于django你應該且必須知道的。 第一步 你是否django編程新手,那就從此開始!從零開始...
摘要:默認對此沒有很好的支持數據庫結構是由另一個工具管理的,并沒有直接修改數據庫結構的權限。第二個思路是利用的多數據庫支持。由于使用后臺的用戶基本上只有公司內部的業務人員,數據量不會大,用服務器級的數據庫有牛刀之嫌。 在多數項目中,總有一些幾乎一成不變的 CRUD 操作,編寫這些代碼很無聊,但又是整個系統必不可少的功能之一。我們在上一個項目中也面臨類似的問題,雖然已經實現了一個功能相對完整的...
摘要:默認對此沒有很好的支持數據庫結構是由另一個工具管理的,并沒有直接修改數據庫結構的權限。第二個思路是利用的多數據庫支持。由于使用后臺的用戶基本上只有公司內部的業務人員,數據量不會大,用服務器級的數據庫有牛刀之嫌。 在多數項目中,總有一些幾乎一成不變的 CRUD 操作,編寫這些代碼很無聊,但又是整個系統必不可少的功能之一。我們在上一個項目中也面臨類似的問題,雖然已經實現了一個功能相對完整的...
閱讀 771·2023-04-25 20:47
閱讀 2534·2019-08-30 15:53
閱讀 947·2019-08-26 14:05
閱讀 894·2019-08-26 11:59
閱讀 1679·2019-08-26 11:43
閱讀 1679·2019-08-26 10:57
閱讀 1355·2019-08-23 18:23
閱讀 2639·2019-08-23 12:57