新手問題:Django的+ Postgres的+ PostGIS的Django的模型中條件關係
我試圖建立在Django一個項目的模型,需要有條件地與根據其幾何類型幾何模型。幾何類型是:點,線或多邊形。問題是如何在項目模型中定義這種關係,以便我不必在同一個表中保存不同的幾何類型(因此,3種不同的幾何模型)
========= ==============這裏是我的模型============================
PRJ_GEOM = (
(1, "point"),
(2, "line"),
(3, "polygon")
)
class Project(models.Model):
name = models.CharField(max_length=20)
project_geom_type = models.IntegerField(choices=PRJ_GEOM)
project_geometry = models.OneToOneField(????) # I am stuck here - how do I express this conditional relationship which depends on project_geom_type
#幾何模型
class Project_Point_Geom(models.Model):
project = models.OneToOne(Project, on_delete=models.CASCADE, related_name='project_point')
point = models.PointField()
class Project_Line_Geom(models.Model):
project = models.OneToOne(Project, on_delete=models.CASCADE, related_name='project_line')
line = models.LineStringField()
class Project_Polygon_Geom(models.Model):
project = models.OneToOne(Project, on_delete=models.CASCADE, related_name='project_polygon')
polygon = models.PolygonField()
我假設這將導致不同的幾何類型被保存在名爲project_geometry的相同字段中。從我的GIS經驗中我知道這不是一個好主意,但也許並不重要。任何線索?有關係嗎? – skulk001
是的,不同的幾何圖形保存在相同的字段類型中並不重要。 – e4c5
這太好了。想知道這是否會對空間查詢的結果產生任何影響 - 比如我正在查詢多邊形中的所有項目 - 我知道點geoms將返回一個集合,對於線條和多邊形,結果將如何? postgis是否執行交點並返回邊界多邊形內的所有幾何? – skulk001