我正在用 Django 开发一种社交网络,但我看不到保持模型耦合的方法。
我有一个模型 User,它可以通过 Comment 模型评论其他用户、图片、页面(大写是因为它们是模型)。为了整理所有评论,我创建了 Board 模型,它有一个所有者并接收发给该所有者的所有评论。问题是我不知道它的主人怎么样,即它属于哪个型号。它可以是图片的板,也可以是用户的板。所以我最终得到了这样一个模型:
class Board(models.Model):
category = models.IntegerField()
owner_id = models.IntegerField()
我存储所有者的 ID 和所有者的类别以便能够执行其他任务,但这个解决方案根本无法说服我。 friend 建议我使用抽象类Board,然后创建UserBoard、PicBoard、PageBoard,其中继承自 Board,但我认为这也没有用。我考虑过 GenericRelations,但我不确定这是否是实现我正在尝试的目标的正确方法。我们会听取和考虑任何建议,感谢您的帮助:)
PS:哦,如果标题描述性不强,我很抱歉,但我想不出更好的标题。这个问题很难解释
请您参考如下方法:
选项 1
创建一个类 BoardOwner。让所有有板子的模型都继承自它,并让板子与 BoardOwner 有外键关系。然后您需要扫描各种子链接以找出哪个是“真正的”子链接。这更繁琐,但将所有复杂性都集中在一个类中。
选项 2
每个有板的类都有一个外键到板。如果你总是让板通过所有者的方法进入你的系统(而不是在 Board 或其他地方查询),你可以在所有者中有代码,让 Board 知道使用哪个外键反向关系。您可能希望将该代码分解到它自己的类中。
选项 3
使用内容类型:https://docs.djangoproject.com/en/dev/ref/contrib/contenttypes/
这样就结束了。
