2016-04-21 62 views
0

我正在創建一個允許用戶創建位置評論的應用程序。我在Django中看到了一個循環導入問題,我在看完這篇文章後解決了這個問題:Django - Circular model import issue解決循環導入問題後未鏈接的模型

我所做的是擺脫了locations.models中的導入,並對我的Review模型進行了惰性導入。在Django管理員中,我可以創建一個Review並將其分配給一個Location。但是,當我在Django admin中打開該位置時,它沒有任何鏈接評論。

到目前爲止還沒有找到任何東西來說明爲什麼我的位置沒有顯示我創建的評論。任何幫助或提示都非常感謝。

的Django = 1.9
的Python = 2.7

由於



locations.models.py:

class Location(models.Model): 
    ... 
    reviews = models.ForeignKey('reviews.Review', null=True, blank=True, related_name="location_reviews") 

reviews.models.py:

from locations.models import Location 

class Review(models.Model): 
    ... 
    location = models.ForeignKey(Location, on_delete=models.CASCADE) 
+0

什麼是您的管理員代碼?也許數據在那裏,但管理員是錯誤的。你有沒有檢查你的數據庫記錄? –

+0

我還沒有做過任何定製的管理員,只註冊模型。我已刪除所有對象,並再次嘗試,但沒有區別。我應該檢查哪些db記錄?在本地使用PostgreSQL但不熟悉pgadmin – Nick

+0

當我運行shell並導入位置並打印location.reviews時,它顯示None,所以不要認爲它是管理員 – Nick

回答

0

如果您有外鍵Review.location,這意味着每個評論都屬於一個位置。

class Review(models.Model): 
    ... 
    location = models.ForeignKey(Location, on_delete=models.CASCADE) 

然後,您可以從location遵循的關係向後看到它的評論。

location.review_set.all() 

有關更多信息,請參閱following relationships backwards上的文檔。

您可能不需要在兩個模型上定義外鍵。定義一個外鍵Location.review意味着每個位置都有一個評論(或者沒有評論),這沒有任何意義。設置review.location不會更新該位置的reviews字段,它們是完全獨立的字段。

+0

謝謝,在我意識到自己在做什麼後感覺像一個白癡錯誤。非常感謝您的幫助! – Nick