实现数据库范围功能的正确方法

2024-05-16 23:21:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用Django创建一个小网站,我需要用数据库中几个表中的数据计算统计数据。你知道吗

例如(与我的实际模型无关),对于给定的用户,假设我想要他参加过的所有生日聚会,以及他在这些聚会中与之交谈的人。为此,我需要一个广泛的查询,访问几个表。你知道吗

现在,从面向对象的角度来看,如果用户类实现了一个返回该信息的方法,那就太好了。从数据库模型的角度来看,我完全不喜欢向需要查询其他表的“行实例”添加功能的想法。我想保留模型类中与这一行相关的所有属性和方法,以避免将业务逻辑分散到各处。你知道吗

从面向对象的角度来看,我应该如何实现属于单个对象的数据库范围的查询?我应该有一个外部类神对象,知道如何收集和组织这些信息?还是有更好、更优雅的解决方案?你知道吗


Tags: 数据对象django实例方法用户模型功能
2条回答

你知道吗User.get\参加了\生日\聚会()或参加聚会(用户)工作良好:当你使用它时,它是一个有意义的界面。创建一个额外的“通用”对象不会使代码更干净或更易于维护。你知道吗

我建议使用控制器扩展Django的模型模板视图方法。我通常有一个控制器.py在我的应用程序中,这是数据源的唯一接口。所以在上面的例子中,我会有get_all_parties_and_people_for_user(user)。你知道吗

当“从数据库中的多个表获取的数据”变为“从多个数据库中的多个表获取的数据”甚至“从各种源获取的数据(例如数据库、缓存后端、外部API等)时,这一点特别有用。你知道吗

相关问题 更多 >