有没有办法将元组保存到django模型?
示例:
Class User(models.Model):
location = models.tupleField()
其中User.location = (longitude, latitude)
答案 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。我认为更好的方法是添加两个字段
longitude
和latitude
或创建另一个模型来存储位置,并在User
模型中添加ForeignKey
。
答案 2 :(得分:0)
如果您觉得需要在单个字段中保存元组,那么您应该真正研究关系。这就是他们被创造的原因。
旧回答:
这个答案假设你真的在保存位置。
如果您正在使用PostgreSQL,则可以使用PostGIS。 MySQL和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
中详细了解它们
答案 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)