Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.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
&引用;选择不同的字段“表中的名称”;使用原始sql的Django_Django_Django Orm - Fatal编程技术网

&引用;选择不同的字段“表中的名称”;使用原始sql的Django

&引用;选择不同的字段“表中的名称”;使用原始sql的Django,django,django-orm,Django,Django Orm,如何运行从表中选择不同的字段名称Django中的SQL查询是否为原始SQL? 当我尝试使用Table.objects.raw(““从表中选择不同的字段名称”)时,我得到了一个异常,如下所示: InvalidQuery:原始查询必须包含主键 看来你得采取一些变通办法了 select field_name, max(id) from table_name group by field_name; 看来你得采取一些变通办法了 select field_name, max(id) from tabl

如何运行
从表中选择不同的字段名称Django中的SQL查询是否为原始SQL


当我尝试使用
Table.objects.raw(““从表中选择不同的字段名称”)
时,我得到了一个异常,如下所示:

InvalidQuery:原始查询必须包含主键


看来你得采取一些变通办法了

select field_name, max(id)
from table_name
group by field_name;

看来你得采取一些变通办法了

select field_name, max(id)
from table_name
group by field_name;

如果您不需要模型实例(如果您想要一个字段,那么模型实例是无用的),您也可以使用普通的db api游标:

from django.db import connection
cursor = connection.cursor()
cursor.execute("select distinct field from table")
for row in cursor:
    print(row[0])
但是对于您的示例用例,您根本不需要SQL—orm有
值_列表
查询集和
distinct()
修饰符:

queryset = YourModel.objects.values_list("field", flat=True).order_by("field").distinct()
print(str(queryset.query))
# > 'SELECT DISTINCT `table`.`field` FROM `table` ORDER BY `table`.`title` ASC'
for title in queryset:
    print(title)
注意:

1/因为我们需要单个字段,所以我使用
flat=True
参数来避免获取元组列表


2/I明确地在字段上设置排序,否则最终在模型元中定义的默认排序也会强制排序字段成为te生成的查询的一部分。

如果您不需要模型实例(如果您想要单个字段,则这些实例是无用的),您也可以使用普通的db api游标:

from django.db import connection
cursor = connection.cursor()
cursor.execute("select distinct field from table")
for row in cursor:
    print(row[0])
但是对于您的示例用例,您根本不需要SQL—orm有
值_列表
查询集和
distinct()
修饰符:

queryset = YourModel.objects.values_list("field", flat=True).order_by("field").distinct()
print(str(queryset.query))
# > 'SELECT DISTINCT `table`.`field` FROM `table` ORDER BY `table`.`title` ASC'
for title in queryset:
    print(title)
注意:

1/因为我们需要单个字段,所以我使用
flat=True
参数来避免获取元组列表


2/I明确地在字段上设置排序,否则最终在模型元中定义的默认排序也会强制排序字段成为te生成的查询的一部分。

得到相同的异常,
InvalidQuery:Raw查询必须包含主键
@JPG您的
型号中有哪个主键?问题在于
选择
命令。我们应该ad
id
(您被添加到
max('id')
而不是
id
)得到相同的异常,
InvalidQuery:Raw查询必须包括主键
@JPG您的
表中有哪个主键
模型?问题在于
选择
命令。我们应该添加
id
(您被添加到
max('id')
而不是
id