Django ORM:如何根据所有记录中的列获取唯一记录(需要模型对象而不是特定值对象)

时间:2016-04-19 07:23:20

标签: django django-models django-orm

将mysql用于后端数据库。查询数据库中的所有记录,如:

ob = Shop.objects.all()

这里查询所有记录,因为需要所有n个列值。然后来问题。

希望根据特定列获取所有非重复记录。尝试使用Python SET功能。但它删除了完全相同的记录。我的记录在特定列值中具有相同的值,但在其他列中没有相同的值。

在Django ORM的帮助下,有人可以分享一些想法吗?

1 个答案:

答案 0 :(得分:0)

如果我已正确理解您的问题,您只想检索没有重复的记录。您可以使用此查询执行此操作:

SELECT * from shops GROUP by (duplicate_field_name) having COUNT(*) = 1

如何用django做到这一点?好的GROUP by是最吸引人的Django。但是,这可以通过原始查询来实现。

ob = Shop.objects.raw('SELECT * from shops GROUP BY
 (duplicate_field_name) having COUNT(*) = 1 ORDER BY some_field')

请记住将shopsduplicate_field_name分别替换为表名和列名的实际名称。