foreignkey(foreignobject)
blog = models.foreignkey(
to="blog"
, to_field=
"nid"
, on_delete=models.do_nothing)
# 外來鍵關聯部落格,乙個部落格站點可以有多個分類
字段
to, # 要進行關聯的表名
to_field = none, # 要關聯的表中的欄位名稱
on_delete = none, # 當刪除關聯表中的資料時,當前表與其關聯的行的行為
- models.cascade,刪除關聯資料,與之關聯也刪除
- models.do_nothing,刪除關聯資料,引發錯誤integrityerror
- models.protect,刪除關聯資料,引發錯誤protectederror
- models.set_null,刪除關聯資料,與之關聯的值設定為null(前提fk欄位需要設定為可空)
- models.set_default,刪除關聯資料,與之關聯的值設定為預設值(前提fk欄位需要設定預設值)
- models.set,刪除關聯資料,
a.與之關聯的值設定為指定值,設定:models.set(值)
b.與之關聯的值設定為可執行物件的返回值,設定:models.set(可執行物件)
例:def func(
): return 10
class mymodel(models.model):
user = models.foreignkey(
to="user",
to_field=
"id"
on_delete = models.set(func),)
# 反向操作時,使用的欄位名,用於代替【表名_set】
related_name = none,
如: obj.表名_set.all(
)== obj.related_name.all(
)# 反向操作時,使用的連線字首,用於替換【表名】 如:
related_query_name = none,
models.usergroup.objects.filter(表名__欄位名=1).values(
'表名__欄位名'
)# 在admin或modelform中顯示關聯資料時,提供的條件:
limit_choices_to = none,
# 如:
- limit_choices_to =
- limit_choices_to = lambda:
from django.db.models import q
- limit_choices_to = q(nid__gt=10)
- limit_choices_to = q(nid=8)
| q(nid__gt=10)
- limit_choices_to = lambda: q(q(nid=8)
| q(nid__gt=10))
& q(caption=
'root'
)db_constraint = true # 是否在資料庫中建立外來鍵約束
parent_link = false # 在admin中是否顯示關聯資料
mysql外來鍵和外來鍵約束
1.mysql中 鍵 和 索引 的定義相同,所以外來鍵和主鍵一樣也是索引的一種。不同的是mysql會自動為所有表的主鍵進行索引,但是外來鍵字段必須由使用者進行明確的索引。用於外來鍵關係的字段必須在所有的參照表中進行明確地索引 2.如果表a的主關鍵字是表b中的字段,則該字段稱為表b的外來鍵,表a稱為主...
mysql 外來鍵和外來鍵約束
1.外來鍵 如果公共關鍵字在乙個關係中是主關鍵字,那麼這個公共關鍵字被稱為另乙個關係的外來鍵。就是a表的主鍵,被用到了b表中,此時它就成了外來鍵 2.外來鍵約束 如果想要插入或者更新外來鍵的值,資料庫會和引用表中字段的資料進行驗證,如果插入或更改的值不在被引用的表中,則插入失敗 外來鍵的作用就是保證...
外來鍵約束 外來鍵級聯操作
建立db2資料庫 create database db2 使用db2資料庫 use db2 外來鍵約束 標準語法 constraint 外鍵名 foreign key 本表外來鍵列名 references 主表名 主表主鍵列名 建表時新增外來鍵約束 建立user使用者表 create table u...