初心者の質問:ジャンゴ+の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 rightという同じフィールドに保存されることを前提としています。私のGISの経験から、これは良い考えではないことは分かっていますが、多分問題ではありません。すべての手がかりは?それは問題ですか? – skulk001
ええ、異なったジオメトリが同じフィールドタイプに保存されても問題ありません。 – e4c5
これは素晴らしいことです。これは、空間クエリの結果上の任意の意味を持っているかどう疑問に思う - 私は、ポリゴン内のすべてのプロジェクトを照会しているよと言う - 私はポイントのgeomがコレクションを返します知っている、その結果は次のようになりますどのようにラインとポリゴンのために? postgisは交差を実行し、境界ポリゴン内のすべてのジオメトリを返しますか? – skulk001