Есть ли способ для Django для поддержки составного первичного ключа в комбинации select_related
или prefetch_related
?
У меня есть таблица записей с составным первичным ключом (device_id, создан) с схема, подобная этой (упрощенная):
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)
I w * sh для выполнения запроса это вернет список устройств, но для каждого из них также будет содержаться последняя запись.
Теоретически это было бы что-то вроде этого:
Device.objects.filter(...).select_related("car", "last_record")
Но очевидно, что "last_record" не является внешним ключом, так как Records содержит составной первичный ключ, который Django не делает support.
Каков наилучший способ сделать это, кроме переписывания запроса в raw sql? Есть ли разумный способ переопределить select_related для обработки составных ключей?