将元组保存到django模型中

时间:2014-01-07 18:52:32

标签: python django django-models tuples

有没有办法将元组保存到django模型?

示例:

Class User(models.Model):
  location = models.tupleField()

其中User.location = (longitude, latitude)

5 个答案:

答案 0 :(得分:8)

也许您正在寻找GeoDjango's PointField

from django.contrib.gis.db import models

Class User(models.Model):
    location = models.PointField(help_text="Represented as (longitude, latitude)”)

答案 1 :(得分:4)

老实说,我没有在django文档中看到tupleField。我认为更好的方法是添加两个字段 longitudelatitude或创建另一个模型来存储位置,并在User模型中添加ForeignKey

答案 2 :(得分:0)

如果您觉得需要在单个字段中保存元组,那么您应该真正研究关系。这就是他们被创造的原因。

旧回答:

这个答案假设你真的在保存位置。

如果您正在使用PostgreSQL,则可以使用PostGISMySQL和Oracle内置了空间字段。

Django已经支持Geo数据了。例如。 -

from django.contrib.gis.db import models

class ModelName(models.Model):
    centroid = models.GeometryField(blank=True, null=True)

然后,您可以进行各种地理查询(例如,查找指定区域内的位置,按距离排序等),您的DBMS将负责处理它们。再加上该单个字段,您可以访问您的数据,如 -

lat, long = [modelobject.centroid.x, modelobject.centroid.y]
# Or you can just use .x or .y directly

您可以在Geodjango documentation

中详细了解它们

答案 3 :(得分:0)

我推荐使用Django-Geoposition应用,另外,您可以在Google地图中查看纬度和经度。

答案 4 :(得分:0)

我认为 this answer 在这里也可以提供帮助。

--

正如@p14z 所暗示的那样,拯救我的tuple 的最佳方式是ArrayField。对于我的示例,我只想使用以下格式保存多边形范围

(3.7739613717694787, 50.31527681737183, 4.726162032377, 50.49743217278623)

from django.contrib.postgres.fields import ArrayField
my_tuple_field = ArrayField(models.FloatField(), size=4, null=True)