是否有將元組保存到django模型的方法?將元組保存爲django模型
例如:
Class User(models.Model):
location = models.tupleField()
其中User.location = (longitude, latitude)
是否有將元組保存到django模型的方法?將元組保存爲django模型
例如:
Class User(models.Model):
location = models.tupleField()
其中User.location = (longitude, latitude)
也許你正在尋找GeoDjango's PointField:
from django.contrib.gis.db import models
Class User(models.Model):
location = models.PointField(help_text="Represented as (longitude, latitude)」)
老實說,我沒有看到tupleField Django的文檔。我認爲更好的辦法是增加兩個字段 longitude
和latitude
或創建另一個模型來存儲位置和在User
模型添加ForeignKey
。
我已經使用兩個字段的方法,但我認爲如果這樣的事情存在,它會讓我在我的模型中有很多字段,ForeignKey解決方案將佔用太多的空間,比需要的更多 – mabdrabo
如果你覺得有必要保存的元組在一個字段,你真的應該考慮的關係。這就是他們創建的原因。
老答案:
這個答案是假設你真正節省了位置。
如果您使用PostgreSQL,則可以使用PostGIS。 MySQL和Oracle有內置的空間域。
Django已經支持地理數據。例如。 -
from django.contrib.gis.db import models
class ModelName(models.Model):
centroid = models.GeometryField(blank=True, null=True)
然後你就可以做出各種地理查詢(e.g看到的是一個指定區域內的地方,通過距離等排序)和你的DBMS會照顧他們。另外從單場,你可以訪問你的數據,如 -
lat, long = [modelobject.centroid.x, modelobject.centroid.y]
# Or you can just use .x or .y directly
您可以在Geodjango documentation閱讀更多關於他們。
事情是它不僅僅是位置,在事實上大多數情況下,他們是字符串 – mabdrabo
對不起,那麼這個答案沒有任何用處。在字符串的情況下,如果您覺得需要在單個字段中保存多個值,則需要深入研究關係。在第一種數據庫規範化形式的單個字段中沒有多個值。 https://en.wikipedia.org/wiki/First_normal_form –
我推薦使用Django-Geoposition應用程序,如需額外的功能,您可以在Google地圖中查看緯度和經度。
你認爲在DB中的表示是什麼?即什麼數據類型? – shx2
我不確定我的選擇,可以請給我一個提示。 – mabdrabo
我不知道一個。您可以創建一個自定義字段,在讀/寫時將元組從/轉換爲單個值(例如其字符串表示形式),或者使用兩個字段/數據庫列。 – shx2