表設計:html
from django.db import models # Create your models here. # class Foo(models.Model): # name = models.CharField(max_length=1) class Business(models.Model): # id caption = models.CharField(max_length=32) code = models.CharField(max_length=32,null=True,default="SA") # fk = models.ForeignKey('Foo') class Host(models.Model): nid = models.AutoField(primary_key=True) hostname = models.CharField(max_length=32,db_index=True) ip = models.GenericIPAddressField(protocol="ipv4",db_index=True) port = models.IntegerField() b = models.ForeignKey(to="Business", to_field='id') # 10 class Application(models.Model): name = models.CharField(max_length=32) r = models.ManyToManyField("Host")
''' Models 層是 Django 框架中最強大的部分之一, 大大方便了 Web 層與數據層的交互。 因爲對 Model 層缺乏系統理解,在使用 model Api 時常常須要查找文檔, 在此作一次系統地整理。 一個model類對應數據庫中的一張表, 類中的屬性表明數據庫中的各個字段。 類實例化後的對象, 表明數據庫中的一條記錄。 ''' ''' 三、filter 級聯 filter, exclude (不包含)等方法不單單能夠單獨使用, 也能夠級聯進行使用 建立 model 對象 Model 對象實例化以後,能夠調用 save() 方法其寫入到數據庫。 from blog.models import Blog # 實例化對象 b = Blog(name='Beatles Blog', tagline='All the latest Beatles news.') # 將對象寫入數據庫 b.save() 當執行 save() 函數時, ORM 會執行 INSERT SQL 語句, 將數據寫入數據庫。在調用 save() 函數以前, 實例不會執行 INSERT 操做。 保存對象更新 假設: 上例中的 b 實例已經存入數據庫, 如今要更新 b 中的 tagline 字段。先更新 tagline 對應的值,而後執行 save() 操做。以下: #更新 tagline 字段 b.tagline = 'All the latest Beatles new 03/28' # 將更新寫入數據庫 b.save() 例: 查詢姓名爲 paul 的做者: # 返回的 QuerySet 對象中只包含 name='paul' 的 model 對象 Author.objects.filter(name='paul') 例: 查詢姓名不爲 paul 的全部做者: # 返回的 QuerySet 對象中,不包含 name='pual' 的 model 對象 Author.objects.exclude(name='paul') 上面介紹的 filter() 等方法返回的結果是 QuerySet 對象。若是明確知道有且只有一個對象能夠查詢到時,可使用 get() 方法進行查詢, 其返回結果爲一個 model 對象。 1 one_entry = Entry.objects.get(pk=1) 返回的 one_entry 爲 model 對象, 而不是 QuerySet 對象。 採用這種方法查詢是,若是查詢結果爲空,將拋出 DoesNotExist 異常。在通常狀況下,不建議使用可使用以下方式代替: one_entry = Entry.objects.filter(pk=1) if one_entry.exists(): one_entry = one_entry[0] pk 縮寫 在 Django 中採用 pk 縮寫來表示 ‘primary key’, 表中的 id (primary key) 主鍵 字段,可使用 pk 來表示 例如: 下面的查詢語句等價 Blog.objects.get(id__exact=13) Blog.objects.get(id=13) Blog.objects.get(pk=13) ''' 具體參見:# https://www.cnblogs.com/zhaoyingjie/p/6984957.html
Django下的migrationspython
Django migrations的時候咱們可能遇到兩個工具:數據庫
django-admin和manage.py。django
其實它們的做用是同樣的,不一樣的是centos
django-admin是存放在python的site-packages/django/bin路徑,app
manage.py是在建立project的時候生成的。使用django-admin能夠對不一樣的項目進行設置。框架
Migrations主要包括如下幾個命令:函數
makemigrations工具
做用:根據model的變化生成對應的python代碼,該代碼用於更新數據庫。spa
語法:django-admin makemigrations [app_label [app_label ...]]
若是沒有填寫任何參數,django會檢查全部應用程序中的model變化生成python腳本
,腳本存放在每一個應用下面一個叫作migrations的文件夾下,腳本名字相似0001_initial.py格式。
centos安裝django
https://www.cnblogs.com/joy99/p/9034253.html