【问题标题】:GeoDjango - Which tables should inherit from django.contrib.gis.db.models?GeoDjango - 哪些表应该从 django.contrib.gis.db.models 继承?
【发布时间】:2016-02-11 04:45:06
【问题描述】:

我刚刚按照教程为 Django 1.9 安装 GeoDjango,我正在尝试编写我的用户模型,但我不确定哪些表应该继承自 django.contrib.gis.db.models 而不是常规的 django.db.models

我正在制作一个 Customer 表,其中有一个 PointField 作为他们的位置,以及一个从名为 Traveller 的客户继承的表。我还有第三张表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
    )

谢谢

【问题讨论】:

    标签: python django inheritance gis geodjango


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-04-11
      • 1970-01-01
      • 1970-01-01
      • 2011-08-02
      • 2010-12-12
      相关资源
      最近更新 更多