Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django自定义SQL返回QuerySet,其中每个对象都有附加属性_Sql_Django_Postgresql - Fatal编程技术网

Django自定义SQL返回QuerySet,其中每个对象都有附加属性

Django自定义SQL返回QuerySet,其中每个对象都有附加属性,sql,django,postgresql,Sql,Django,Postgresql,假设我有以下对象: squirrel_table - name - country_of_origin - id nut_table - id - squirrel_who_owns_me[fk to squirrel] 我想检索特定国家所有松鼠的列表。返回的squirrel对象可以位于QuerySet中,但不需要位于QuerySet中。一份清单就足够了。每个松鼠将有一个额外的属性调用nut_count。这方面的SQL如下所示(请注意,我使用子查询是为了不枚举squir

假设我有以下对象:

squirrel_table 
  - name
  - country_of_origin
  - id

nut_table
  - id
  - squirrel_who_owns_me[fk to squirrel]
我想检索特定国家所有松鼠的列表。返回的squirrel对象可以位于QuerySet中,但不需要位于QuerySet中。一份清单就足够了。每个松鼠将有一个额外的属性调用nut_count。这方面的SQL如下所示(请注意,我使用子查询是为了不枚举squirrel的所有列,因为实际上会有很多列)(我使用PostgreSQL):


是否有一种方法可以执行SQL,将它生成的游标转换为squirrel对象的列表,并将螺母计数添加到每个squirrel中?

您可能需要通读,其中包括一个类似的“选择其他对象并将其附加到每个对象”情况的示例。

如果需要执行SQL,请使用raw()。 如果您添加一个pk“select table.id as pk,table.*…”,那么它的行为将类似于您可能使用的查询集

sql = 'select sq.id as pk, sq.* ... %s'
squirreled = squirrel_table.objects.raw(sql, ["arg1"])
sql = 'select sq.id as pk, sq.* ... %s'
squirreled = squirrel_table.objects.raw(sql, ["arg1"])