通过不相关字段链接django中的多个数据库模型

通过不相关字段链接django中的多个数据库模型,django,django-models,Django,Django Models,在sql中,如果有两个表的字段具有相似的数据,但没有连接在一起,则可以这样将它们链接起来 select tab1.name, tab1.gender, tab1.occupation, tab2.location , tab2.biz_time ,tab3.address from staffdata tab1, sales tab2, address tab3 where tab1.user_id=tab2.user_id and tab3.location_id=tab2.locat

在sql中,如果有两个表的字段具有相似的数据,但没有连接在一起,则可以这样将它们链接起来

select tab1.name,  tab1.gender,  tab1.occupation, tab2.location , tab2.biz_time ,tab3.address 
from staffdata tab1, sales tab2, address tab3 where 
tab1.user_id=tab2.user_id and tab3.location_id=tab2.location_id
这会将它们链接起来,从我尝试过的3个表子查询中生成结果, 使用值进行注释,但得到错误的结果

这就是我尝试过的

code_subquery = SalesRecord.objects.filter(staff__username__iexact=request.user,
                            user_id=OuterRef('user_id'))


timetablevalues= StaffData.objects.filter(staff=request.user,
        user_id=Subquery( code_subquery.values(
            'location', 'biz_time', 'item')))\
        .values('name','gender',
        'location', 'biz_time', 'item')
虽然这是针对2个表的,但我以后可能会针对3个表这样做


请告诉我如何使用Django ORM进行任意连接并不容易,需要深入研究代码。如果您想做这样的事情,您应该简单地使用原始查询。但是这不会使代码暴露于sql注入吗?抱歉replyNot中的延迟,除非通过字符串连接等方式传递参数。请参阅。一般来说,原始查询是不安全的,正如开发人员所做的那样。ORM更安全,因为它正确地转义值,并使用参数化查询等。通常,当它将ORM查询转换为SQL查询时,安全做法是。@AbdulAzizBarkat与ORM相比,我如何使查询非常安全?