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, и добавляет некоторые свои.
Таким образом, вы можете безопасно наследовать все свои модели от ГИС-моделей. Это то же самое.