2

我正在 Django 中开发一种社交网络,但我看不到保持模型耦合的方法。

我有一个模型User,它可以通过模型评论其他用户、图片、页面(大写是因为它们是模型)Comment。为了安排所有评论,我创建了 Board 模型,它有一个所有者并接收所有针对该所有者的评论。问题是我不知道它的所有者如何,即它属于哪个型号。它可以是图片板,也可以是用户的板。所以我最终得到了这样的模型:

class Board(models.Model):
   category = models.IntegerField()
   owner_id = models.IntegerField()

我存储所有者的 ID 和所有者的类别以便能够执行其他任务,但这个解决方案根本无法说服我。一位朋友建议我使用抽象类Board,然后创建一个继承自的UserBoard, PicBoard,但我认为这也没用。我想过,但我不确定这是否是实现我正在尝试的正确方法。任何建议都会被听取和考虑,感谢您的帮助:)PageBoardBoardGenericRelations

PS:哦,对不起,如果标题不是很具有描述性,但我想不出更好的。这个问题很难解释

4

1 回答 1

3

选项1

创建一个类BoardOwner。让所有具有板子的模型都继承自该板子,并让板子与BoardOwner. 然后,您需要扫描各种子链接以确定哪个是“真正的”子链接。这更加繁琐,但将所有复杂性本地化在一个类中。

选项 2

每个班级都有一个外键,每个班级都有一个董事会。如果您总是有板通过所有者上的方法进入您的系统(而不是查询Board或其他地方),您可以在所有者中拥有代码,让Board知道使用哪个外键反向关系。您可能希望将该代码分解到它自己的类中。

选项 3

使用contenttypeshttps ://docs.djangoproject.com/en/dev/ref/contrib/contenttypes/

这结束了这种事情。

于 2012-07-24T22:09:58.460 回答