Mysql 我想问一下Django的简单连接技术

Mysql 我想问一下Django的简单连接技术,mysql,database,django,django-models,Mysql,Database,Django,Django Models,很抱歉,我是Django的新手。所以,我遇到了一个关于连接两个表的简单查询的问题。假设我有两个具有一对一关系的表调用table1和table2: 表1字段A、字段B、字段C 表2字段A、字段C、字段Z 我想得到如下查询结果 SELECT T1.fieldA,fieldB,fieldC,fieldZ FROM table1 as T1, table2 as T2 WHERE T1.fieldA=T2.fieldA 在Django我怎么做 提前感谢。未经测试的代码,在火车上的早期通勤状态下编写,但

很抱歉,我是Django的新手。所以,我遇到了一个关于连接两个表的简单查询的问题。假设我有两个具有一对一关系的表调用table1和table2: 表1字段A、字段B、字段C 表2字段A、字段C、字段Z

我想得到如下查询结果

SELECT T1.fieldA,fieldB,fieldC,fieldZ FROM table1 as T1, table2 as T2 WHERE T1.fieldA=T2.fieldA
在Django我怎么做


提前感谢。

未经测试的代码,在火车上的早期通勤状态下编写,但这应该可以:

results = Table1Model.objects.filter(fieldA__in = Table2Model.objects.all().values_list('fieldA',flat=True))
这将获得相关Table1模型对象的查询集。如果只需要这些值,请在上面的最后一个大括号后添加:

.values_list('fieldA','fieldB','fieldC','fieldZ', flat=True)
或者,请记住,您可以回到原始SQL:

results = Table1Model.objects.raw("SELECT T1.fieldA,fieldB,fieldC,fieldZ 
                                   FROM table1 as T1, table2 as T2 
                                   WHERE T1.fieldA=T2.fieldA")

假设您使用的是Django 1.2,它也会返回对象。如果只需要值,请从上面添加值列表位,或查看

中的额外内容。您可以使用以下方法隐式连接:


您的模型是如何指定的?是的,您需要开始考虑模型和Django的ORM,而不是单纯地在DB表中-这样您将从ORMThanks中获得更多。我现在想明白这是怎么回事了。。再次感谢
Table1Model.objects.extra(
    tables=['table2'],
    where=['table1.fieldA = table2.fieldA']
)