Django:当innerjoin使用extra而不使用foreignkey时选择所有列

时间:2017-11-22 05:05:34

标签: mysql django orm inner-join

我有两张桌子,他们没有外键或关系。但是,我必须连接并从两个表中获取所有列。这是我所做的查询。

query = Sms.objects \
        .extra(tables=['product'], where=['product.id=sms.sms_id'])

当我打印原始查询时,我可以检查它只从Sms模型获取表,而不是从产品模型中获取。有没有办法从产品型号中获取列?

1 个答案:

答案 0 :(得分:1)

听起来你需要一些raw queries

显然,您需要根据您的需求以及您希望/需要访问数据的方式来自定义SQL。但这是一个非常简单的例子:

crsr = dbconnection.cursor()
myresults = crsr.execute("SELECT A.*, B.* FROM A,B WHERE A.ID=B.ID")
for myresult in myresults:
    print('{} {} {}'. format(myresult[0], myresult [1], myresult[2]))
crsr.close()

关于这个问题的django documentation非常好。这是Django的强大功能。但是力量很大......