GeoDjango - 哪些表应该从 django.contrib.gis.db.models 继承?
GeoDjango - Which tables should inherit from django.contrib.gis.db.models?
我刚刚按照教程为 Django 1.9 安装了 GeoDjango,我正在尝试编写我的用户模型,但我不确定哪些 table 应该继承自 django.contrib.gis.db.models
而不是常规的 django.db.models
.
我正在制作一个 Customer
table,它有一个 PointField 作为他们的位置,还有一个 table 继承自名为 Traveller
的客户。我还有第三个 table Equipment
,它有一个指向 Traveller
.
的外键
我的继承权对吗?有更好的方法吗?
from django.contrib.gis.db import models as gis_models
from django.db import models
class Customer(gis_models.Model):
user = gis_models.OneToOneField(
settings.AUTH_USER_MODEL,
on_delete=models.SET_NULL,
blank=True,
null=True
)
location = gis_models.CharField(max_length=100)
gis_location = gis_models.PointField(u"longitude/latitude",
geography=True, blank=True, null=True)
name = gis_models.CharField(max_length=100)
class Meta:
abstract = True
class Traveller(Customer):
will_travel = gis_models.NullBooleanField()
class Equipment(models.Model):
name = models.CharField(max_length=50)
description = models.CharField(max_length=100)
owner = models.ForeignKey(
'Traveller',
on_delete=models.SET_NULL,
null=True
)
谢谢
这是来自django/contrib/gis/db/models/__init__.py
的代码
from django.db.models import * # NOQA isort:skip
from django.contrib.gis.db.models.aggregates import * # NOQA
from django.contrib.gis.db.models.fields import ( # NOQA
GeometryCollectionField, GeometryField, LineStringField,
MultiLineStringField, MultiPointField, MultiPolygonField, PointField,
PolygonField, RasterField,
)
from django.contrib.gis.db.models.manager import GeoManager # NOQA
gis 模块导入 django 中定义的所有模型,并添加一些自己的模型。
因此您可以安全地从 gis 模型继承所有模型。都是一样的。
我刚刚按照教程为 Django 1.9 安装了 GeoDjango,我正在尝试编写我的用户模型,但我不确定哪些 table 应该继承自 django.contrib.gis.db.models
而不是常规的 django.db.models
.
我正在制作一个 Customer
table,它有一个 PointField 作为他们的位置,还有一个 table 继承自名为 Traveller
的客户。我还有第三个 table Equipment
,它有一个指向 Traveller
.
我的继承权对吗?有更好的方法吗?
from django.contrib.gis.db import models as gis_models
from django.db import models
class Customer(gis_models.Model):
user = gis_models.OneToOneField(
settings.AUTH_USER_MODEL,
on_delete=models.SET_NULL,
blank=True,
null=True
)
location = gis_models.CharField(max_length=100)
gis_location = gis_models.PointField(u"longitude/latitude",
geography=True, blank=True, null=True)
name = gis_models.CharField(max_length=100)
class Meta:
abstract = True
class Traveller(Customer):
will_travel = gis_models.NullBooleanField()
class Equipment(models.Model):
name = models.CharField(max_length=50)
description = models.CharField(max_length=100)
owner = models.ForeignKey(
'Traveller',
on_delete=models.SET_NULL,
null=True
)
谢谢
这是来自django/contrib/gis/db/models/__init__.py
from django.db.models import * # NOQA isort:skip
from django.contrib.gis.db.models.aggregates import * # NOQA
from django.contrib.gis.db.models.fields import ( # NOQA
GeometryCollectionField, GeometryField, LineStringField,
MultiLineStringField, MultiPointField, MultiPolygonField, PointField,
PolygonField, RasterField,
)
from django.contrib.gis.db.models.manager import GeoManager # NOQA
gis 模块导入 django 中定义的所有模型,并添加一些自己的模型。
因此您可以安全地从 gis 模型继承所有模型。都是一样的。