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 模型继承所有模型。都是一样的。