2016-02-11 47 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

完美,谢谢! –

相关问题