Django «отчетливый», возвращающий несколько значений - PullRequest
0 голосов
/ 13 января 2012

Я знаю, что этот вопрос обсуждался здесь, но я действительно не могу заставить это работать ... :( У меня есть эта модель DeviceLocation:

class DeviceLocation(models.Model):
        device = models.ForeignKey(Device, related_name='locations', null=True, on_delete=models.SET_NULL)
        device_imei = models.CharField(max_length=20)
        user = models.ForeignKey(User, related_name='device_locations', null=True, on_delete=models.SET_NULL)
        user_username = models.CharField(max_length=30, null=True)
        timestamp = models.DateTimeField()
        latitude = models.FloatField()
        longitude = models.FloatField()
        accuracy = models.FloatField()
        speed = models.FloatField()

Я хочу получить последнее местоположение для каждогодругое устройство, за последние 5 минут. Поэтому я попробовал это:

time_now = datetime.now()
time_from = time_now.replace(minute=time_now.minute - 5)
last_device_locations = DeviceLocation.objects.filter(timestamp__range=(time_from, time_now)).distinct('device')

Дело в том, что не работает отличный ... Вернуть несколько результатов для одного устройства. Я искал сайт и нашел работус использованием значений, даже если я не могу это сделать:

DeviceLocation.objects.filter (timestamp__range = (time_from, time_now)). values ​​('device','timestamp'). order_by ('device'). Different ('device')

, но это все равно не работает ... :( Любые подсказки?

Спасибо!

1 Ответ

0 голосов
/ 14 января 2012

Можете ли вы попробовать это:

DeviceLocation.objects.filter(timestamp__range=(time_from, time_now)).order_by('device', '-timestamp').distinct('device')

Я не уверен, но может случиться так, что вызов .values ​​() взаимодействует с отборным отчетом.

Кроме того, вы хотите добавить '-timestamp' к вызову .order_by (), чтобы убедиться, что вы получаете самое последнее местоположение для каждого устройства.

...