GeoDjango-哪些表应该继承自django.contrib.gis.db.models?

2024-09-29 00:12:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我刚刚按照教程为django1.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
    )

谢谢


Tags: djangotruedbmodelscustomercontribnulllength
1条回答
网友
1楼 · 发布于 2024-09-29 00:12:51

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

相关问题 更多 >