本篇內容介紹了“Django中Mode的外鍵自關聯和引用未定義的Model方法”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
我們提供的服務有:網站建設、成都網站制作、微信公眾號開發、網站優化、網站認證、丹鳳ssl等。為超過千家企事業單位解決了網站和推廣的問題。提供周到的售前咨詢和貼心的售后服務,是有科學管理、有技術的丹鳳網站制作公司Django Model的外鍵自關聯
在django的model定義中,有時需要某個Field引用當前定義的Model,比如一個部門(Department)的Model,它有一個字段是上級部門(super_department),上級部門應該是一個外鍵并引用Model Department,即:
class Department(models.Model): ''' some other filed ''' super_department = models.ForeignKey(Department)
但是這樣的定義對于python來說是不允許的,因為在定義Field super_department時,Department定義還未完成,python會提示你Department未定義,那么怎么辦呢?放心吧,django已經為你考慮好這種情況了,只需要在定義時將ForeignKey所引用的Model改為‘self'即可,即:
class Department(models.Model): ''' some other filed ''' super_department = models.ForeignKey('self')
然后同步models至數據庫時就會生成一個引用自己的外鍵。
Django Model之引用一個未定義的Model
有時在django的Model定義中,會出現引用一個未定義Model的情況,比如一個用戶(User)屬于某一個部門(Department),每一個部門有一個領導(leader),這個領導也是一個用戶,即:
class Department(models.Model): name = models.CharField(max_length=20) leader = models.ForeignKey(User, related_name = 'lead_group', null = True) class User(models.Model): username = models.CharField(max_length = 20) department = models.ForeignKey(Department, related_name = 'users')
但這么定義就會引發在Department定義時,Field leader引用User,但此時的User還未定義。有人會說,先定義User,再定義Department,那也會引發一樣的問題,因為User的department引用Department,此時的Department一樣未被定義。那么這時候怎么辦呢?其實,只需要將ForeignKey引用的Model改為字符串即可,即:
class Department(models.Model): name = models.CharField(max_length=20) leader = models.ForeignKey('User', related_name = 'lead_group')#User now be str type class User(models.Model): username = models.CharField(max_length = 20) department = models.ForeignKey(Department, related_name = 'users')
“Django中Mode的外鍵自關聯和引用未定義的Model方法”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注創新互聯成都網站設計公司網站,小編將為大家輸出更多高質量的實用文章!
另外有需要云服務器可以了解下創新互聯scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業上云的綜合解決方案,具有“安全穩定、簡單易用、服務可用性高、性價比高”等特點與優勢,專為企業上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
分享文章:Django中Mode的外鍵自關聯和引用未定義的Model方法-創新互聯
當前URL:http://vcdvsql.cn/article32/didipc.html
成都網站建設公司_創新互聯,為您提供App開發、營銷型網站建設、動態網站、小程序開發、響應式網站、定制網站
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯