Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 方法或其他方法在两个不同的数据库之间运行查询_Django - Fatal编程技术网

Django 方法或其他方法在两个不同的数据库之间运行查询

Django 方法或其他方法在两个不同的数据库之间运行查询,django,Django,我会根据我的模型之间的公共字段(电子邮件)显示远程表中的一些字段。我恢复发言: 我的Django项目显示一个与另一个表电子邮件(ForeignKey)相关的主表Prospect。存储在我的默认Django数据库(Postgres)中 然后我可以在另一个应用程序中显示来自第三个电子邮件工具的远程表,存储在MySQL数据库中,这要感谢Django数据库路由器系统。所有这些都在我的Django管理员中很好地共存 现在,我将在Prospect admin表单中显示远程表中的一些字段,当然是只读的。 在S

我会根据我的模型之间的公共字段(电子邮件)显示远程表中的一些字段。我恢复发言:

我的Django项目显示一个与另一个表电子邮件(ForeignKey)相关的主表Prospect。存储在我的默认Django数据库(Postgres)中

然后我可以在另一个应用程序中显示来自第三个电子邮件工具的远程表,存储在MySQL数据库中,这要感谢Django数据库路由器系统。所有这些都在我的Django管理员中很好地共存

现在,我将在Prospect admin表单中显示远程表中的一些字段,当然是只读的。 在SQL/PHP中,为了简化,我会这样做:

SELECT myfield FROM MyRemoteTable WHERE email = {EmailValue}
但是我在哪里,怎样才能用Django做到这一点呢? 我认为在我的电子邮件模型中有一种特殊的方法,但是。。。不容易

编辑:

按照AKX的建议,我开始在EmailInLine中添加一个特殊的方法:

这在我的表格子表单中显示“xxx”,在每个电子邮件的右侧,很好

好的,现在我必须找到如何编写Python查询来恢复我的远程相关字段,使用每个电子邮件作为查询中的变量


THX预先

由于
ModelAdmin
readonly\u字段
允许在admin类中调用,您可以执行以下操作

class ProspectAdmin(ModelAdmin):
只读字段=(…,“外部电子邮件信息”)
#... 
def外部电子邮件信息(自我,实例:潜在客户):
返回获取外部信息(实例)

iirc,如果需要呈现小部件,还可以返回一个被标记为安全的html字符串

我很自豪,结合官方的Django文档和一些语法测试(…),我做了我想做的事情

例如,在这里,我以电子邮件表格的形式显示了2个外部字段(这意味着在您管理multi DB和Django router DB,并从远程表创建具有模型的应用程序之前)。 然后在admin.py中:

from MyAppFromExternalDB.models import MyModelFromRemoteTable


谢谢,但是模型之间的链接在哪里呢?
from MyAppFromExternalDB.models import MyModelFromRemoteTable
class EmailInLine(admin.TabularInline):
model = Email
extra = 0

readonly_fields=('get_ExternalField1', 'get_ExternalField2')

def get_ExternalField1(self, obj):
    for temp_var in MyModelFromRemoteTable.objects.raw('SELECT subid FROM external_table WHERE email LIKE %s', [obj.email]):
        return temp_var.ExternalField1
get_ExternalField1.short_description = 'ExternalField1'

def get_ExternalField2(self, obj):
    for temp_var in MyModelFromRemoteTable.objects.raw('SELECT subid FROM external_table WHERE email LIKE %s', [obj.email]):
        return temp_var.ExternalField2
get_ExternalField2.short_description = 'ExternalField2'