django - 将`select_related`与具有复合主键的表一起使用[Django]
问题描述
有没有办法让 Django 支持组合select_related
或组合的复合主键prefetch_related
?
我有一个带有复合主键(device_id,created)的 Records 表,其架构如下(简化):
class Records(models.Model):
class Meta:
managed = False
unique_together = (("device", "created"),)
# The primary key is really (device_id, created)
device = models.ForeignKey("hardware.Device", primary_key=True, on_delete=models.CASCADE)
created = models.DateTimeField(db_index=True)
value = models.FloatField(default=0)
一条记录属于一个设备,它的建模如下(简化):
class Device(models.Model):
car = models.ForeignKey("cars.Car", on_delete=models.CASCADE)
last_record_at = models.DateTimeField(null=True, blank=True)
我希望运行一个返回设备列表的查询,但每个设备还包含最后一条记录。
理论上,这将是这样的:
Device.objects.filter(...).select_related("car", "last_record")
但显然“last_record”不是外键,因为 Records 包含 Django 不支持的复合主键。
除了用原始 sql 重写查询之外,最好的方法是什么?是否有合理的方法来覆盖 select_related 以处理复合键?
解决方案
推荐阅读
- haskell - 如何像 Maybe monad 一样使用 Scotty 的 ActionT monad,并为错误返回早期的 http 响应?
- c# - 测试永远不会失败 - 为什么 Assert 不起作用?
- html - 在 mat-list-item 中包含 href 不起作用
- pine-script - pine 脚本版本 4 中的编译错误
- amazon-athena - 雅典娜中的 timestamp_micros 函数
- linux - 保存 bash 命令的输出以与管道命令 (|) 一起使用
- swift - 如何在 RealityKit 中仅围绕一个轴旋转对象?
- r - 在给定阈值上查找接下来几个月的预测值在 r 中的概率
- sas - SAS 拟合回归模型以通过其他五个变量预测“mpg”。报告变异膨胀因素并解释
- string - 使用应用脚本在 Google 电子表格中找不到替换功能