繁体   English   中英

将元组保存到 Django 模型

[英]save a tuple to a django model

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

例子:

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

其中User.location = (longitude, latitude)

也许您正在寻找GeoDjango 的 PointField

from django.contrib.gis.db import models

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

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

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

旧答案:

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

如果您使用的是 PostgreSQL,则可以使用PostGIS MySQL和 Oracle 具有内置的空间字段。

Django 已经支持地理数据。 例如——

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 文档 中阅读有关它们的更多信息

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

我认为这个答案在这里也有帮助。

——

正如@p14z 所暗示的那样,保存tuple的最佳方法是ArrayField 对于我的示例,我只想使用以下格式保存 Polygon extent

(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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM