django - Django在分组后获取模型所有字段
问题描述
我有一个模型;
class Location(models.Model):
g_id = models.ForeignKey(User, on_delete=models.CASCADE, related_name="guard_id")
corX = models.IntegerField()
corY = models.IntegerField()
date = models.DateTimeField()
def __int__(self):
return self.map_id
我想使用此查询获取每个外键的最新记录;
query = Location.objects.values('g_id').annotate(timestamp=Max('date'))
这是我的查询结果。
<QuerySet [{'g_id': 1, 'timestamp': datetime.datetime(2021, 3, 29, 8, 57, tzinfo=<UTC>)}, {'g_id': 2, 'timestamp': datetime.datetime(2021, 3, 29, 8, 55, 50, tzinfo=<UTC>)}]>
如何通过分组数据获取 corX、corY 值?
解决方案
您可以在订购时在字段上使用distinct
[Django docs] ,以获取每个条目的最大值:g_id
-date
g_id
date
query = Location.objects.order_by('g_id', '-date').distinct('g_id')
注意:这仅适用于PostgreSQL ,因为您可以在 distinct 调用中为PostgreSQL指定字段。
推荐阅读
- gitkraken - Gitkraken、Linux Mint 和 ~/.ssh 密钥
- python - 将字符串列表转换为整数时出现意外输出
- c# - .netCore 中的 BinaryFormatter 尝试从 mscorlib 加载类型
- docker - 使用 Docker 的 Elasticsearch:使用 JDBC 连接/配置的节点均不可用
- sql - 合并来自同一列的值
- javascript - Konva.js - 如何获取组中对象的位置,在其层内测量?
- android - 在 Firestore 中存储和检索文档的有效方法
- javascript - 使用 puppeteer 获取数据的时间问题
- sql - 具有多个“INSERT INTO Table_Variable EXECUTE stored_procedure”语句的存储过程
- node.js - 如何根据预签名 URL 写入 S3 存储桶中的现有文件?