首页 > django数据库查询问题

django数据库查询问题

有这样几张表:

要查询某一地区的url情况,需要从urlcollect表中的mac入手,查询到该mac属于的地区。

问题是urlcollect表没有键和router关联,虽然他们都有mac字段……
请问django有没有方法可以查询这种没有外键连接的情况


我用两层循环可以得到数据,但是很耗时:

r = Routers.objects.filter(router_groups_id__province_id=7644)
for i in r:
    u = UrlCollect.objects.filter(router_mac=i.mac)
    for j in u:
        print(j.url)

如果用原生sql语句就快很多:

SELECT url.url, count(url.url) nums, r.mac, rg.province_id, d.name from app_urlcollect AS url
  RIGHT JOIN app_routers AS r  ON url.router_mac=r.mac
  RIGHT JOIN app_routergroups as rg ON r.router_groups_id=rg.id
  RIGHT JOIN app_districts AS d ON d.id=rg.province_id WHERE rg.province_id='7644'
  GROUP BY url.url

求一个优雅一点的django方法?

【热门文章】
【热门文章】