2015-03-02 88 views
1

如何在使用自定义查询时创建查询集对象。查询集对象

我想加入5表。但是没有在所有表中定义的外键(其整数字段而不是外键)

例如:PersonID是整数字段。用户的商店ID。所以现在我想加入这两个表,因为没有外键定义。那么如何加入这两个。

如果我们使用的自定义查询像

cursor.connection() 
cursor.execute() 

那么它不检索查询中设置的对象。无论如何,我需要查询设置对象。所以你可以帮我解决这个问题。

谢谢。

回答

1

使用raw()查询:

Person.objects.raw("SELECT * FROM app_person <YOUR JOINS HERE>") 

UPDATE:如果你想用docts值,而不是模型实例,那么你可以使用direct SQL代替QuerySet操作。配方在文档中有描述:

def dictfetchall(cursor): 
    "Returns all rows from a cursor as a dict" 
    desc = cursor.description 
    return [dict(zip([col[0] for col in desc], row)) 
      for row in cursor.fetchall()] 

cursor = connection.cursor() 
cursor.execute("SELECT * FROM app_person <YOUR JOINS HERE>"); 
values = dictfetchall(cursor) 
+0

它给我行查询集。我需要Queryset对象中的值。谢谢 – Nikunj 2015-03-03 07:24:45

+0

查看最新的答案。 – catavaran 2015-03-03 09:16:17