Django、ForeignKey关系和Q

2024-05-16 02:07:59 发布

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

我有点问题。考虑DB中的这个数据模式(为简单起见,我省略了一些内容):

class Table1(Model):
   field1;
   field2;
   table2 = ForeignKey('Table2');

class Table2(Model):
   filed3;

现在是示例数据:

Table2:
{ id:1, field3: lola }
{ id:2, field3: disney }

Table1:
{ id:1, field1: foo, field2: bar, table2_id: 1 }
{ id:2, field1: lola, field2: bars, table2_id: null }

主要部分:

SQL查询:

SELECT t1.*, t2.field3 
FROM table1 AS t1 LEFT JOIN table2 AS t2 ON t1.table2_id=t2.id 
WHERE t1.field1 ILIKE '%lola%' OR t2.field3 ILIKE '%lola%';

将从表1生成两行:id=1和id=2。你知道吗

现在我想要同样的django,但当我尝试时:

Table1.objects.filter( Q(filed1__icontains="lola") | Q(table2__filed3__icontains="lola") );

它只返回id=1,因为在id=2的行上table2\u id为null。你知道吗

它排除id=2的行,因为它在第二个Q上失败。 那样的话,我怎么能从Django拿到两排呢?你知道吗

有什么想法吗?你知道吗


Tags: 数据idmodelnullclasst1lolafield2
1条回答
网友
1楼 · 发布于 2024-05-16 02:07:59

据我所知,数据库模式不是通过django orm创建的。在您的情况下,Django makeINNER JOIN。用途:

table2 = ForeignKey('Table2', blank=True, null=True)

相关问题 更多 >