日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

Django框架(十)--常用字段、参数、元信息、多对多关联关系

發布時間:2023/11/27 生活经验 56 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Django框架(十)--常用字段、参数、元信息、多对多关联关系 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、ORM字段

# AutoField()
int自增列,必須填入參數 primary_key=True。當model中如果沒有自增列,則自動會創建一個列名為id的列# IntegerField()
一個整數類型,范圍在 -2147483648 to 2147483647# CharField()
字符類型,必須提供max_length參數, max_length表示字符長度# DateField()
日期字段,日期格式  YYYY-MM-DD,相當于Python中的datetime.date()實例# DateTimeField()
日期時間字段,格式 YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ],相當于Python中的datetime.datetime()實例# DecimalField(Field)
10進制小數參數:max_digits,小數總長度decimal_places,小數位長度# TextField(Field)
文本類型# FilePathField(Field)
字符串,Django Admin以及ModelForm中提供讀取文件夾下文件的功能參數:path,                      文件夾路徑match=None,                正則匹配recursive=False,           遞歸下面的文件夾allow_files=True,          允許文件allow_folders=False,       允許文件夾# FileField(Field)
字符串,路徑保存在數據庫,文件上傳到指定目錄參數:upload_to = ""      上傳文件的保存路徑storage = None      存儲組件,默認django.core.files.storage.FileSystemStorage

二、ORM參數

# null
用于表示某個字段可以為空,null=True# unique
如果設置為unique=True 則該字段在此表中必須是唯一的 # db_index
如果db_index=True 則代表著為此字段設置索引# default
為該字段設置默認值
# DateField和DateTimeField的兩個參數# auto_now_add
配置auto_now_add=True,創建數據記錄的時候會把當前時間添加到數據庫# auto_now
配置上auto_now=True,每次更新數據記錄的時候會更新該字段

三、關系字段

1、ForeignKey

外鍵類型在ORM中用來表示外鍵關聯關系,一般把ForeignKey字段設置在 '一對多'中'多'的一方

# to
設置要關聯的表# to_field
設置要關聯的表的字段# related_name  (一般不使用)
反向操作時,使用的字段名,用于代替原反向查詢時的'表名_set'# related_query_name    (一般不使用)
反向查詢操作時,使用的連接前綴,用于替換表名# on_delete
在Django1.X版本中,默認是級聯的;在Django2.X版本中,需要手動設置級聯
當刪除關聯表中的數據時,當前表與其關聯的行的行為models.CASCADE刪除關聯數據,與之關聯也刪除models.DO_NOTHING刪除關聯數據,引發錯誤IntegrityErrormodels.PROTECT刪除關聯數據,引發錯誤ProtectedErrormodels.SET_NULL刪除關聯數據,與之關聯的值設置為null(前提FK字段需要設置為可空)models.SET_DEFAULT刪除關聯數據,與之關聯的值設置為默認值(前提FK字段需要設置默認值)models.SET刪除關聯數據,a. 與之關聯的值設置為指定值,設置:models.SET(值)b. 與之關聯的值設置為可執行對象的返回值,設置:models.SET(可執行對象)# db_constraint
是否在數據庫中創建外鍵約束,默認為True

2、OneToOneFiled

通常一對一字段用來擴展已有字段

# to
設置要關聯的表# to_field
設置要關聯的字段# on_delete
同ForeignKey字段

3、ManyToManyField

用于表示多對多的關聯關系。在數據庫中通過第三張表來建立關聯關系

# to
設置要關聯的表# related_name      (一般不做替換)
同ForeignKey字段# related_query_name     (一般不用)
同ForeignKey字段# symmetrical
僅用于多對多自關聯時,指定內部是否創建反向操作的字段。默認為True# through
在使用ManyToManyField字段時,Django將自動生成一張表來管理多對多的關聯關系
但我們也可以手動創建第三張表來管理多對多關系,此時就需要通過through來指定第三張表的表名# through_fields
設置關聯的字段# db_table
默認創建第三張表時,數據庫中表的名稱

四、元信息

ORM對應的類里面包含另一個Meta類,而Meta類封裝了一些數據庫的信息。主要字段如下:

# db_table
ORM在數據庫中的表名默認是 app_類名,可以通過db_table可以重寫表名# index_together
聯合索引# unique_together
聯合唯一索引# ordering
指定默認按什么字段排序

五、多對多關聯關系的三種方式

1、通過ManyToManyField自動創建第三張表

class Book(models.Model):name = models.CharField(max_length=32)authors = models.ManyToManyField(to='Author')class Author(models.Model):name = models.CharField(max_length=32)

2、利用ForeignKey自行創建第三張表

class Book(models.Model):name = models.CharField(max_length=32)class Author(models.Model):name = models.CharField(max_length=32)class Book2Author(models.Model):book = models.ForeignKey(to='Book')author = models.ForeignKey(to='Author')class Meta:unique_together = ('book','author')

3、設置ManyTomanyField并指定自行創建的第三張表

class Book(models.Model):name = models.CharField(max_length=32)authors = models.ManyToManyField(to='Author',through='Book2Author',through_fields=('book','author'))class Author(models.Model):name = models.CharField(max_length=32)class Book2Author(models.Model):book = models.ForeignKey(to='Book')author = models.ForeignKey(to='Author')class Meta:unique_together = ('book','author')# 當我們需要在第三張關系表中存儲額外的字段時,就要使用該方式
# 當我們使用第三種方式創建多對多關聯關系時,就無法使用set、add、remove、clear方法來管理多對多的關系了,需要通過第三張表的model來管理多對多關系

?

轉載于:https://www.cnblogs.com/zhangbingsheng/p/10662252.html

總結

以上是生活随笔為你收集整理的Django框架(十)--常用字段、参数、元信息、多对多关联关系的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。