我是 Django 的新手;我有一个遗留数据库,我无法控制一些关于用户的信息和我服务器上的一个数据库,其中包含与用户正在做的事情有关的数据。我想通过 Django 使用的 ORM 方法从每个数据库中获取一些信息并将其显示在网络表单上,但我正在努力。我搜索患者 ID,可以找到与他们相关联的代码,但是当涉及到显示每个代码与相关数据的成本时,我不知道这样做的最佳方法。我目前不保存此数据。
(我的数据库)
class Data(models.Model):
code = models.CharField(max_length=12)
cost = models.FloatField()
unit = models.CharField(max_length=2)
(旧版)
class UserHistory(models.Model)
userid= models.IntegerField(db_column='userid', blank=True, null=True)
code = models.CharField(db_column='code', max_length=11, blank=True)
firstname = models.CharField(db_column='FirstName', max_length=35, blank=True)
middlename = models.CharField(db_column='MiddleName', max_length=35, blank=True)
lastname = models.CharField(db_column='LastName', max_length=35, blank=True)
期望的输出:
这是用户名字姓氏的费用
Last Name | First Name | Code | Cost
----------+-------------+----------+--------
xxx | zzzzz | 2 | 10.00
xxx | zzzzz | 6 | 10.00
xxx | zzzzz | 7 | 10.00
xxx | zzzzz | 11 | 10.00
请您参考如下方法:
它在 Django 文档中:https://docs.djangoproject.com/en/dev/topics/db/multi-db/ ,特别是你可以创建 two querysets from different databases .
您必须从第一个查询集中获得结果,export them as a list并使用该列表查询第二个数据库 ( using the in operator )。
示例:
user = UserHistory.objects.using('legacy').filter(firstname='John', lastname='Doe')
codes = list(users.values_list('code', flat=True))
costs = Data.objects.using('default').filter(code__in=codes)
您可以使用聚合(例如 Sum)或直接将 costs 查询集传递给您的 RequestContext。
编辑: 该示例返回单个用户的所有 Data。从 user 变量,您可以访问所有用户属性(例如 user.middlename)。
