设计更好性能的模型

时间:2014-11-08 14:43:22

标签: django django-models

我的主要任务是在django应用程序中实现喜欢和评论,但我对模型结构和应用程序的整体架构有所顾虑。

我想要实现的目标:

基本上我只有两个模型(例如书和作者),我希望被喜欢,分享和评论。显然,我需要创建相应的表。问题是,如何更好地引用Book和Author行中的每个Like,Share和Comment。

第一个解决方案:首先想到的是在LikeShareComment添加相应的ForeignKeys,这将指向AuthorBook。因此,例如Like表将采用下一种形式:

|---------|-----------|-----------|
|   ID    | AUTHOR_ID |  BOOK_ID  | 

ID的ID为LikeAUTHOR_IDBOOK_ID为ForeignKeys到AuthorBook行。

此解决方案的问题在于,如果您想添加“喜欢”更多内容的功能,则需要向Like表添加新列。我认为这个解决方案很糟糕,因为Like表可以很快成长。

第二个解决方案:我已阅读this question,其中解决方案建议创建一个父表,该表可以被喜欢,然后从其中继承Book和Author表。

这个解决方案对我来说似乎很好,但现在关注的是Django ORM中的具体继承。在书Two scoops of Django中,作者建议几乎无处不在。

你能不能请教我一些建议,不管我是否应该选择多元(具体)继承来实现我的目标?或者是另一个更美丽,更干净的解决方案?

由于

1 个答案:

答案 0 :(得分:3)

这正是generic relations创建要解决的问题。该链接上的文档描述了标记系统,但它可以很容易地应用于喜欢。