2016-02-11 76 views
1

我剛剛按照教程爲Django 1.9安裝GeoDjango,我試圖編寫我的用戶模型,但我不確定哪些表應該從django.contrib.gis.db.models而不是常規django.db.models繼承。GeoDjango - 哪些表應該從django.contrib.gis.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中定義的所有車型,並增加了一些它自己的。

因此,您可以安全地繼承gis模型中的所有模型。這是同一件事。

+0

完美,謝謝! –

相關問題