Django:从主键复制行

时间:2013-09-18 10:53:20

标签: django django-models django-queryset django-orm

我有下表

id       val  
--------------
1        abc  
2        xyz  
3        abc  
4        abc

鉴于主键(id),我需要能够获得与具有主键的行具有相同val的所有行。

目前我有以下django代码:

Table.objects.filter(val = Table.objects.get(id=1).val)  

但这会对数据库进行两次查询。我想将此减少为单个数据库调用。这在Django中是否可行。

1 个答案:

答案 0 :(得分:4)

您始终可以使用extra()

Table.objects.extra(where=['val=(select val from app_table where id=1)'])

这将导致单个查询:

SELECT 
    * 
FROM
    app_table 
WHERE 
    val=(SELECT val FROM app_table WHERE id=1)