2016-04-21 66 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