django之models模塊使用


定義模型

將數據庫表定義成類,集成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。在父表中的字段在字表中都有效,只是沒有保存在字表中

 

具體的用法參考官網

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM