您好,登錄后才能下訂單哦!
本篇文章為大家展示了如何分析django models中的一對N關系,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
下面介紹django models三種關系模型中的一對N關系:
一對N模型
在sql語言中,1:N關系是通過在‘附表’中設置到‘主表’的外鍵引用來完成在Django模型層,可以用models,Foreignkey 類型的字段定義外鍵
'''
內容分類表
'''
class concat(models.Model):
# 分類id
id = models.BigAutoField(primary_key=True)
# 父類目ID=0時,代表的是一級的類目
parent_id = models.BigIntegerField(default=0)
# 名字
name = models.CharField(max_length=50)
# 狀態(可選值:1(正常),2(刪除))
status = models.IntegerField(default=1)
# 排列序號,表示同級類目的展現次序,如數值相等則按名稱次序排列。取值范圍:大于零的整數
sort_order = models.IntegerField(default=1)
# 該類目是否為父類目,1為true,0為false
is_parent = models.SmallIntegerField(default=1)
# 創建時間
created = models.DateTimeField(auto_now_add=True)
# 更新時間
updated = models.DateTimeField(auto_now=True)
'''
內容表
'''
class content(models.Model):
# 內容id
id = models.AutoField(primary_key=True),
# 分類id
cid = models.ForeignKey(concat, on_delete=models.CASCADE)
# 標題
title = models.CharField(max_length=1000)
# 子標題
sub_title = models.CharField(max_length=1000)
# 標題描述
title_desc = models.CharField(max_length=500)
# 鏈接
url = models.CharField(max_length=500)
# 圖片的絕對路徑
pic = models.CharField(max_length=300)
# 內容
content = models.TextField(default="")
# 創建時間
created = models.DateTimeField(auto_now_add=True)
# 更新時間
updated = models.DateTimeField(auto_now=True)
上述代碼與一對一關系的唯一不同就是用models.ForeignKey定義了content模型中的cid字段。這樣每個concat對象就可以與多個content對象關聯了
queinfo = que_info.objects.all()
for que in queinfo:
queCat = que.cid.name
#通過附對象獲取主對象
print que.cid
print queCat
可以直接通過點‘cid’,也就是外鍵來獲取他的主對象
a = que_cat.objects.all()
for a1 in a:
a1.que_info_set
#通過主對象獲取附對象
上述內容就是如何分析django models中的一對N關系,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。