定義模型
將數據庫表定義成類,集成models.Model
from django.db import models
# Create your models here.
class Author(models.Model):
name=models.CharField(max_length=100)
django會自動生成id字段作為主鍵,如果不定義主鍵的話
2,使用模型
將使用manage.py startapp XXX 創建的應用加入到setting下的INSTALLED_APPS下面,注意它為元組,別忘記后面的逗號
確保運行命令manage.py migrate,可以事先使用manage.py makemigrations 給應用生成遷移腳本。
3,字段
字段類型
模型中的每一個字段是field子類的實例
CharField和TextField字段都是最基本的保存文本的字段,其中Charfield是指定固定長度的,另一個是無限長的
DataField和DatatimeField字段是保存時間的字段
FileField是保存文件路徑的字段
也可以自己自定義字段類型
字段選項
Null,如果為True,則將數據庫中空值保存為NULL,默認為False
Blank,如果為True,則表單的驗證允許為空值,默認為False,他是表單輸入驗證范疇的
Choice,由二維元組提供一些選項,設置了choice,表單是一個選擇框,而不是文本框
Default,字段的默認值,可以是一個值或者可調用對象
Help_text,表單部件額外顯示的幫助信息
Primary_key,如果為True,則該字段為主鍵,如果表中沒有設置該值,django自動生成Id字段為主鍵
Unique,如果為True,這個數據字段在整個表中都是唯一的
關系
Django提供了最常見的三種數據庫關系:多對一,多對多,一對一
多對一關系
Django使用 django.db.models.ForeignKey 定義多對一關系,和使用其他字段類型一樣,在模型中把它作為類的屬性包含進來
class Author(models.Model):
name=models.CharField(max_length=100)
class Book(models.Model):
title=models.CharField(max_length=100)
author=models.ForeignKey(Author) #定義了多對一的關系
length=models.IntegerField()
若要創建一個遞歸的關聯 —— 對象與自己具有多對一的關系 —— 請使用models.ForeignKey('self')。
如果你需要關聯到一個還沒有定義的模型,你可以使用模型的名字而不用模型對象本身:
from django.db import models
class Car(models.Model):
manufacturer = models.ForeignKey('Manufacturer')
class Manufacturer(models.Model):
# ...
Pass
多對多關系
ManyToManyField 用來定義多對多關系,用法和其他Field 字段類型一樣:在模型中做為一個類屬性包含進來。
在哪個模型中使用ManytoManyField並不重要,在兩個模型中任選一個即可,不用兩個模型都設置
class Book(models.Model):
title=models.CharField(max_length=100)
author=models.ForeignKey(Author)
length=models.IntegerField()
class classify(models.Model):
name=models.CharField(max_length=100)
books=models.ManyToManyField(Book) #定義多對多的關系
也可以按照數據庫sql定義多對多關系的形式,在定義另一個模型,對兩個模型設置外鍵
一對一關系
OneToOneField用來定義一對一關系。 用法和其他字段類型一樣:在模型里面做為類屬性包含進來。
class Author(models.Model):
name=models.CharField(max_length=100)
class Authorinfo(models.Model):
phone=models.CharField(max_length=20)
add=models.CharField(max_length=300)
sex=models.CharField(choices=sex_choice)
author=models.OneToOneField(Author)
模型方法
可以在模型上定義自定義的方法來給你的對象添加自定義的“底層”功能。Manager 方法用於“表范圍”的事務,模型的方法應該着眼於特定的模型實例。
如def __str__(self) #適用於python3
Return xxx
對於python2使用
Def __unicode__(self)
Return xxx
多表集成
Django的model中提供表之間的集成關系,每一層級下面的models是一個完整的model。在父表中的字段在字表中都有效,只是沒有保存在字表中
具體的用法參考官網
