我在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