【问题标题】:Any alternatives for OneToMany or ManyToOne in DjangoDjango 中 OneToMany 或 ManyToOne 的任何替代方案
【发布时间】:2017-05-26 21:50:34
【问题描述】:

我在 Django 中有一个 NOTIFICATION 和一个 USER 应用程序。 代码类似于:

class Notification(models.Model):
    user = models.ForeignKey(User , related_name = "notification"
    ....
    ....

class User(models.Model):
    notifications = models.OneToManyField(Notification , related_name = "user"
    ....
    ....

现在我知道 Django 中不存在 models.OneToManyField。 我知道我可以简单地从模型的通知实例中访问用户。但我想这会以某种方式减慢我的系统,因为在生产中我会保留通知模型的所有实例。 例如:一旦系统投入大量时间,我预计每个用户会收到大约 500 多个通知。

我想,直接访问一个用户的所有通知会更容易,而不是筛选整个通知表来查找特定用户的通知。
我在一定程度上阅读了this 和文档,但我无法找到解决问题的方法。

我也不确定处理器从整个通知表中获取所有通知的处理限制。我只是假设它会慢一些。

【问题讨论】:

    标签: python sql django django-models


    【解决方案1】:

    OneToManyField 在 Django 中不存在,因为它只是 ForeignKey 的反向关系。所以这里不需要User 模型上的notifications 字段,只需将其删除即可。

    不要过早地担心过滤通知的性能。查询关系是 SQL 的设计初衷,也是关系数据库擅长做的事情。

    【讨论】:

    • 我想相信我的数据库引擎的过滤能力是目前最可靠的解决方案。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-01
    • 1970-01-01
    • 2013-08-20
    • 2014-08-26
    • 2012-05-17
    相关资源
    最近更新 更多