如果你在 ForeignKey或 ManyToManyField字段上使用 related_name屬性,你必須總是為該字段指定一個(gè)唯一的反向名稱。但在抽象基類上這樣做就會(huì)引發(fā)一個(gè)很嚴(yán)重的問題。因?yàn)?Django 會(huì)將基類字段添加到每個(gè)子類當(dāng)中,而每個(gè)子類的字段屬性值都完全相同 (這里面就包括related_name)。
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名注冊、網(wǎng)絡(luò)空間、營銷軟件、網(wǎng)站建設(shè)、化隆網(wǎng)站維護(hù)、網(wǎng)站推廣。當(dāng)你在(且僅在)抽象基類中使用 related_name 時(shí),如果想繞過這個(gè)問題,名稱中就要包含'%(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://jinyejixie.com/article22/ddspjc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、微信小程序、網(wǎng)頁設(shè)計(jì)公司、微信公眾號、網(wǎng)站內(nèi)鏈、動(dòng)態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容