Для следующих моделей я хочу, чтобы получить все устройства, которые имеют запись в таблице истории с transition_date между заданным интервалом:Джанго - соединить две модели
class History(models.Model):
device = models.ForeignKey(DeviceModel, to_field='id')
transition_date = models.DateTimeField()
class Meta:
db_table = 'History'
class DeviceModel(models.Model):
id = models.IntegerField()
name = models.CharField()
class Meta:
db_table = 'Devices'
У меня есть этот код, который фильтрует для указанного интервал:
devices = DeviceModel.objects.filter(history__transition_date__range=(startDate, endDate))
Это дает мне столько строк, сколько History
таблица имеет с transition_date
в указанном диапазоне. Функция фильтра выполняет INNER JOIN между DeviceModel
и History
на device id
только для получения DeviceModel
полей. Мой вопрос заключается в том, как я получаю данные одновременно из History
и DeviceModel
, присоединяя их как к фильтру/select_related на идентификаторе устройства. Я бы предпочел написать собственный SQL-запрос.
Я хочу, чтобы сериализовать эти устройства + историю для каждого устройства и вернуть их как HttpResponse, когда я их сериализую, я получаю только устройства. – AlexandruC
Добавить поле истории, которое вы хотите просмотреть в quer y, которое вы выполняете. – AlvaroAV
Возможно, вы хотите отредактировать sql-запрос? – AlexandruC