我在models.py
这两个类:基于Django ORM中最后一个孩子获取所有匹配记录?
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))\
但问题是,我得到基于自己的立场单个驱动器的几个时间。
现在我只想获得最新的更新位置,而不是他们以前的驱动程序。
谢谢
感谢您的回答。但我不想只得到每个位置的驱动程序。我想获得每位车手的最后位置。你可以为此提出任何建议吗?@ppython –
在这里,@ mehrdad-pedramfar – ppython
在这里,@ mehrdad-pedramfar,我添加了带注释的第二个想法!这一个应该更精确地做你需要的东西!让我更新。 – ppython