Django内部联接查询集不工作

2024-09-30 12:13:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我要完成的SQL是-

SELECT jobmst_id, jobmst_name, jobdtl_cmd, jobdtl_params FROM jobmst
INNER JOIN jobdtl ON jobmst.jobdtl_id = jobdtl.jobdtl_id
WHERE jobmst_id = 3296

我只在django中成功地使用了一次annote和order_by,但我似乎无法让它在prefetch_related()或select_related()中工作

我的模特也是这样-

^{pr2}$

我有一个非常简单的观点

# Test Query with Join
def test_queryjoin(request):
    queryset = Jobmst.objects.filter(jobmst_id=3296).order_by('jobdtl_id')
    queryresults = serializers.serialize("python", queryset, fields=('jobmst_prntid', 'jobmst_id', 'jobmst_prntname', 'jobmst_name', 'jobmst_owner', 'jobdtl_cmd', 'jobdtl_params'))
    t = get_template('test_queryjoin.html')
    html = t.render(Context({'query_output': queryresults}))
    return HttpResponse(html)

我试过做很多事情-

查询集=Jobmst.objects.all().预取相关()

查询集=Jobmst.objects.all()。选择“相关”()

查询集=jobmst.objects.filter(jobmst_id=3296).order_by('jobdtl_id')

还有一些我忘了。在

每次我得到的json都只来自jobmst表,没有提到我想要的jobdtl结果。如果我走另一条路Jobdtl.objects.xxxxxxxxx同样的,它没有给我另一个模型的结果。在

为了重述一下,我想显示两个表中满足某个子句的字段。在

什么给予?在


Tags: nametestcmdidbyobjectshtmlorder
2条回答

好像我总是找错地方。从SQL开始,我一直在思考内部连接表,但这并不是如何工作的。我加入了模型的结果。在

因此,重新考虑我的搜索,我遇到了itertools和chain函数。在

我现在在我的视图.py在

from itertools import chain

jobmstquery = Jobmst.objects.filter(jobmst_id=3296)
jobdtlquery = Jobdtl.objects.filter(jobdtl_id=3296)
queryset = chain(jobmstquery, jobdtlquery)
queryresults = serializers.serialize("python", queryset)

它显示了每个表的结果,就像我在SQL中所希望的那样。现在我可以专注于过滤结果以得到我想要的。在

请记住,您需要的信息几乎总是在那里,只是知道如何查找的问题:)

你要找的可能是这个

queryset = Jobmst.objects.filter(id=3296).values_list(
    'id', 'name', 'jobmst_owner__cmd', 'jobmst_owner__params')

您只需要一个查询就可以得到结果,您应该能够使用sort来处理这个问题。在

从SQL中你可能会发现一些很好的见解查询集.查询(django生成的SQL)在django shell中。在

相关问题 更多 >

    热门问题