簡體   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