У меня есть две модели устройства и журнала установки как таковой:Django запрос получить последние записи для каждой записи и отображения в комбинированном списке
class device(models.Model):
name = models.CharField(max_length=20)
code = models.CharField(max_length=10)
description = models.TextField()
class log(model.Model):
device = models.ForeignKey(device)
date = models.DateField()
time = models.TimeField()
data = models.CharField(max_length=50)
как я могу получить список, который содержит только самую последнюю запись/журнал (на основе даты и время) для каждого устройства и комбинируют их в следующей форме:
имени, код, дата, время, данные
будучи Django новичком я хотел бы реализовать это с помощью ORM Джанго. ТИА!
EDIT:
до сих пор не работает для меня, хотя я попробовал этот подход:
devices=device.objects.annotate(latest_log_date=Max('log_date')),latest_log_time=Max('log_time'))
logs=get_list_or_404(log.objects.filter(date__in=[b.latest_log_date for b in devices],time__in=[b.latest_log_time for b in devices]))`
это только дает мне самый последний журнал от каждого устройства ... не объединить оба курса ... но на основе этого, как я могу представить его по имени, коду, дате, времени, формату данных?
Хммм, я получаю объект «функция», не имеет атрибута «order_by» в следующей строке: l = d.log_set.all.order_by ('- date', '- time') [0] – gtujan
it должно быть все(). order_by() Но за исключением: pass antipatter, либо он должен быть зарегистрирован на другом объекте, либо он должен громко рушиться. Вы рискуете бесшумным повреждением данных/системы. – Almad