如何在Django / Postgres应用程序中存储用户的位置

时间:2018-03-13 01:02:45

标签: python sql django postgis geodjango

我正在开发一个Phone应用程序,每次打开应用程序时都会将用户的位置发送到后端。

我的目标是为用户存储尽可能多的位置数据,以便我可以进行一些机器学习来计算每天正常移动区域中哪些帖子最适合他们。 < / p>

我使用GeoDjango和PostGis使应用程序可以识别位置,并且很难确定数据库中哪种数据结构最适合这种情况。

问题归结为我是否应该为每个用户提供一个location = pg_fields.ArrayField()属性,该属性最终会非常大,或者使用location=models.ManyToManyField(UserLocation)。我知道Toast表在Postgres中是一个大型数组的问题,但它们是否足够大,在运行机器学习算法时尝试为用户提取数据时不会有压力?

1 个答案:

答案 0 :(得分:0)

将您的位置数据保存在自己的模型中:

class UserLocation(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL, ...)
    recorded_at = models.DateTimeField()  # time recoreded on phone
    created_at = models.DateTimeField(auto_now_add=True)  # time saved on db
    location =  models.PointField()
    accuracy = models.IntegerField() # meters, rounded up
    altitude = models.IntegerField(null=True, blank=True) # meters, rounded
    # more info... IP, phone type, phone id, session id, app version etc.