django - 在 2 个不同的数据库之间运行查询的方法或其他东西
问题描述
我会根据我的模型之间的公共字段(电子邮件)显示远程表中的一些字段。我继续:
我的 Django 项目显示一个主表Prospect,与另一个表Email (ForeignKey) 相关。存储在我的默认 Django DB (Postgres) 中。
然后我可以在另一个应用程序中显示来自第三个电子邮件工具的远程表,该表存储在 MySQL 数据库中,这要归功于 Django 数据库路由器系统。所有这些在我的 Django 管理员中都很好地共存。
现在我将在我的前景管理表单中显示我的远程表中的一些字段,当然是只读的。在 SQL/PHP 中,简化,我会做这样的事情:
SELECT myfield FROM MyRemoteTable WHERE email = {EmailValue}
但是我可以在哪里以及如何使用 Django 做到这一点?我想在我的电子邮件模型中使用一种特殊的方法,但是……并不容易!
编辑:
根据 AKX 的建议,我开始在我的EmailInLine中添加一个特殊方法:
class EmailInLine(admin.TabularInline):
model = Email
extra = 0
readonly_fields=('get_test1', )
def get_test1(self, obj):
return "xxx"
get_test1.short_description = 'Test 1'
这在我的表格子表单中显示“xxx”,在每封电子邮件的右侧,很好。
好的,所以现在我必须找到如何编写一个 Python 查询来恢复我的远程相关字段,在我的查询中使用每封电子邮件作为变量。
提前 THX
解决方案
由于ModelAdmin
'sreadonly_fields
允许在管理类中调用,您可以执行类似的操作
class ProspectAdmin(ModelAdmin):
readonly_fields = (...,'external_email_info')
#...
def external_email_info(self, instance: Prospect):
return get_that_external_info(instance)
iirc,mark_safe
如果你需要渲染一个小部件,你也可以返回一个已经被 d 的 html 字符串。
推荐阅读
- java - 如何使用 aws java SDK 从子网 ID 获取路由 ID?
- python - sqlite 提供的绑定数量不正确
- linux - 如何从 linux 上的量角器禁用 chrome 网络安全?
- java - 如何解决“要创建一个新的mock,必须注销现有的mock注册”
- javascript - 复选框子父 JavaScript
- swiftui - 观察对象更改时视图不会重新加载
- python - AttributeError:使用 Tweepy 和 Twitter API
- javascript - Javascript/jQuery 通过特定的某些文本更改单词颜色包含
- python - 如何在pycharm中将mysql连接到python。我目前使用的是 Ubuntu 20.04?
- c - 为什么子进程在父进程调用 wait() 函数之前没有退出?