我今天带着一个关于 Django 的设计/架构问题来了。
我在几个需要地理数据(州、城镇等)的网站(托管在同一台服务器上)上工作。每个项目都包含应用程序,并且每个应用程序可能包含具有ForeignKey
城镇或州字段的模型。
为了不重复我自己,我不想建立一个数据库来存储这些城镇和州,并通过 Django 项目来使用它。
Django 提供了一种在同一个项目中使用多个数据库的简单方法,在settings.py
文件中声明它并编写路由器类来保存读取和写入的内容。但是那样,不可能使用select_related
如下语句:
job = get_object_or_404(Jobs.objects.select_related('state__town'), user=user)
这种行为对我来说很自然(不可能从头开始在数据库之间进行连接)......
我的问题:
- 考虑引入dblinks是个好主意(我不这么认为......)并且 Django 可以处理它(我没有找到这部分的任何文档)吗?
- 面对这种情况,您将如何进行?
一个快速而肮脏的解决方案是在每个项目数据库中导入所有地理数据(城镇、州......),但它根本不是 DRY :( :
python manage.py loaddata geo.json
另一种解决方案可能是构建一个单独的“geo”应用程序,它可以将数据“服务”(我不知道如何)给其他项目......实际上,我试过GeoDjango,但它似乎真的很复杂,而且可能不会回答我的问题!
非常感谢您的回答!