Я пишу веб-интерфейс для гидрологов. Гидролог должен увидеть таблицу с различными гидрологическими измерениями, подобными этой.
+----------------+----------------------+-------+--------------------+-------------+------------------+
| observation_id | observation_datetime | level | water_temperature |precipitation|precipitation_type|
+----------------+----------------------+-------+--------------------+-------------+------------------+
| 1 | 2019-03-11 11:00:00 | 11 | 21 | 31 |
| 2 | 2019-03-12 12:00:00 | 12 | 22 | 32 |
| 3 | 2019-03-13 13:00:00 | 13 | 23 | 33 |
| 4 | 2019-03-14 14:00:00 | 14 | 24 | 34 |
У меня есть эти модели для описания измерений
class AbstractMeasurement(model.Model):
observation_datetime = models.DateTimeField()
observation = models.ForeignKey(Observation, on_delete = models.DO_NOTHING)
class Meta:
abstract = True
class Level(AbstractMeasurement):
level = models.DecimalField()
class WaterTemperature(AbstractMeasurement):
air_temperature = models.DecimalField()
class Precipitation(AbstractMeasurement):
precipitation = models.DecimalField()
precipitation_type = models.CharField()
и т.д.
Уровень Основное измерение и измерение не могут быть выполнены без уровня. Уровень является базовой моделью.
В MySQL я могу сделать это по этому запросу
SELECT level.observation_id,
level.observation_datetime,
level.level,
water_temperature.water_temperature,
precipitation.precipitation,
precipitation.precipitation_type
FROM level
LEFT JOIN precipitation ON
level.observation_datetime = precipitation.observation_datetime
AND
level.observation_id = precipitation.observation_id
LEFT JOIN water_temperature ON
level.observation_datetime = water_temperature.observation_datetime
AND
level.observation_id = water_temperature.observation_id;
Как я могу ВСТУПИТЬ в Django с моделями без отношения внешнего ключа?