Djangomodel反向關(guān)聯(lián)名稱的方法-創(chuàng)新互聯(lián)

如果你在 ForeignKey或 ManyToManyField字段上使用 related_name屬性,你必須總是為該字段指定一個(gè)唯一的反向名稱。但在抽象基類上這樣做就會(huì)引發(fā)一個(gè)很嚴(yán)重的問(wèn)題。因?yàn)?Django 會(huì)將基類字段添加到每個(gè)子類當(dāng)中,而每個(gè)子類的字段屬性值都完全相同 (這里面就包括related_name)。

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛(ài)。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶,將通過(guò)不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名注冊(cè)、網(wǎng)絡(luò)空間、營(yíng)銷軟件、網(wǎng)站建設(shè)、化隆網(wǎng)站維護(hù)、網(wǎng)站推廣。

當(dāng)你在(且僅在)抽象基類中使用 related_name 時(shí),如果想繞過(guò)這個(gè)問(wèn)題,名稱中就要包含'%(app_label)s'和 ‘%(class)s'。

‘%(class)s'會(huì)替換為子類的小寫加下劃線格式的名稱,字段在子類中使用。

‘%(app_label)s'會(huì)替換為應(yīng)用的小寫加下劃線格式的名稱,應(yīng)用包含子類。每個(gè)安裝的應(yīng)用名稱都應(yīng)該是唯一的,而且應(yīng)用里每個(gè)模型類的名稱也應(yīng)該是唯一的,所以產(chǎn)生的名稱應(yīng)該彼此不同。

from django.db import models

class Base(models.Model):
 m2m = models.ManyToManyField(OtherModel, related_name="%(app_label)s_%(class)s_related")

 class Meta:
 abstract = True

class ChildA(Base):
 pass

class ChildB(Base):
 pass

文章名稱:Djangomodel反向關(guān)聯(lián)名稱的方法-創(chuàng)新互聯(lián)
鏈接地址:http://www.muchs.cn/article22/ddspjc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、微信小程序、網(wǎng)頁(yè)設(shè)計(jì)公司、微信公眾號(hào)、網(wǎng)站內(nèi)鏈、動(dòng)態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)