【发布时间】:2016-03-17 12:38:03
【问题描述】:
我是 Django 初学者。我有两个模型,我想在 Django 管理界面中显示为一张表。以下是模型的简化版本:
class Final_Application_Personal_Detail(models.Model):
user = models.ForeignKey(User)
name = models.CharField(max_length=20)
id_no = models.CharField(max_length=14)
class Final_Application_Beneficiary_Detail(models.Model):
user = models.ForeignKey(User)
beneficiary_name = models.CharField(max_length=20)
beneficiary_id_no = models.CharField(max_length=14)
我想因为这两个模型在概念上构成了一个表单(Final_Application 表单)的一部分,所以我可以使用 Django 的表单向导 - 但是,因为实际上个人详细信息和受益人详细信息都需要填写很多,我想我想让用户有机会单独填写它们(在 django formwizard 中,据我所知,如果用户没有一次填写所有数据,那么所有以前的数据也会丢失,因为表单无法与未验证的字段一起保存)。
我想在 Django admin 中加入这两个模型,以便管理用户可以在一个页面上查看所有用户信息(个人详细信息和受益人详细信息)。所以,我想在“用户”字段上对上述表格进行内部连接。 SQL 如下所示:
SELECT *
FROM Final_Application_Personal_Detail
JOIN Final_Application_Beneficiary_Detail
ON Final_Application_Personal_Detail.user = Final_Application_Beneficiary_Detail.user
关于 Django 的 ORM,我查看了关键字参数 related_to 以加入表格。但是,我认为这不会起作用……似乎“select_related”只是规定外键的另一种方式。我现在想使用原始 SQL 来加入表。我尝试使用游标函数来实现原始 SQL,但我不太清楚如何实现它,以便输出显示在 Django 的管理界面中。另外,我有点害怕使用原始 SQL,因为据我了解,原始 SQL 会引入安全风险(我读过 Django 的 ORM 可以防止 SQL 注入)。
感谢您的帮助。
【问题讨论】: