我在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和文档,但我无法找到解决问题的方法。
此外,我不确定处理器的处理限制,以从整个通知表中获取所有通知。我只是假设它会慢一些。
答案 0 :(得分:4)
OneToManyField
,因为它只是ForeignKey
的反向关系。因此,您不需要notifications
模型上的User
字段,只需将其删除即可。
不要过早担心过滤通知的效果。查询关系是SQL的设计目标,这就是关系数据库擅长做的事情。