GeoDjango - Какие таблицы должны наследоваться от django.contrib.gis.db.models?

Я только следовал руководству по установке GeoDjango для Django 1.9 и пытаюсь написать свои пользовательские модели, но я не уверен, какие таблицы должны наследоваться от 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
    )

Спасибо

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, и добавляет некоторые свои.

Таким образом, вы можете безопасно наследовать все свои модели от ГИС-моделей. Это то же самое.

Другие вопросы по тегам