Mysql 我想问一下Django的简单连接技术
很抱歉,我是Django的新手。所以,我遇到了一个关于连接两个表的简单查询的问题。假设我有两个具有一对一关系的表调用table1和table2: 表1字段A、字段B、字段C 表2字段A、字段C、字段Z 我想得到如下查询结果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我怎么做 提前感谢。未经测试的代码,在火车上的早期通勤状态下编写,但
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']
)