【发布时间】:2017-04-22 08:55:12
【问题描述】:
我的models.py 中有这两个类:
class BaseObject(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
create_date = models.DateTimeField(auto_now_add=True)
update_date = models.DateTimeField(auto_now=True)
class Meta:
ordering = ['create_date']
class Person(BaseObject):
first_name = models.CharField(max_length=30, null=True, blank=True)
last_name = models.CharField(max_length=30, null=True, blank=True)
phone_number = models.CharField(max_length=15,unique=True)
birthday = models.DateField(null=True, blank=True)
email = models.EmailField(null=True, blank=True)
class Driver(Person):
balance = models.PositiveIntegerField(null=True, blank=True)
score = models.PositiveIntegerField(null=True, blank=True)
class Position(BaseObject):
person = models.ForeignKey(Driver, on_delete=models.CASCADE)
latitude = models.FloatField()
longitude = models.FloatField()
正如您所见,每个车手可能会在打发时间的情况下担任多个职位。
我想要一个使用 Django ORM 的查询,它给我每个司机的最后位置,假设我从客户端收到 latitude 和 longitude 并希望返回附近的所有汽车。
我试过这个:
radius = 5
drivers = Driver.objects.filter(position__latitude__range=(data.get('latitude') - radius, data.get('latitude') + radius))\
.filter(position__longitude__range=(data.get('longitude') - radius, data.get('longitude') + radius))\
但问题是我根据他们的位置多次获得一个司机。
现在我只想让驱动程序获得他们最后的更新位置,而不是他们以前的更新位置。
谢谢
【问题讨论】:
标签: django python-3.x django-models django-orm