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

Django ORM: How to get unique records based on a column from all records(Need model object not particular value object)

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

ob = Shop.objects.all()

此处查询所有记录,因为需要所有n列值。那就来答题吧。

想根据某一列获取所有不重复的记录。尝试使用 Python SET 函数。但它会删除完全相同的记录。我有在特定列值中具有相同值但在其他列中具有不同值的记录。

有人可以分享一些在 Django ORM 的帮助下完成此操作的想法吗!!!

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

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 分别替换为 table 的实际名称和列名。