首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果我使用的是GeoDjango,那么我继承哪个models.Model有关系吗?

如果我使用的是GeoDjango,那么我继承哪个models.Model有关系吗?
EN

Stack Overflow用户
提问于 2015-09-25 07:46:41
回答 1查看 315关注 0票数 1

在一个正常的Django模型中,我们从

代码语言:javascript
复制
from django.db import models
class New_model(models.Model):
    ...

我正在努力学习使用GeoDjango,它也有自己的模型类。

代码语言:javascript
复制
from django.contrib.gis.db import models
class New_Model(models.Model) :
     ...

我是否需要继承特定的gis.db库模型,还是仍然可以使用常规的models.Model。(这会有任何影响吗?)

UPDATE:由于整个模型不是从db.gis.models.Model继承的,而是继承了django.db.models.Model,所以我在教程中遇到了这个模型的问题。这些字段来自db.gis.models.Model。

代码语言:javascript
复制
from django.contrib.gis.db import models as gis_models
from django.contrib.gis import geos
from django.db import models

class Shop(models.Model):
    name = models.CharField(max_length=200)
    address = models.CharField(max_length=100)
    city = models.CharField(max_length=50)
    location = gis_models.PointField(u"longitude/latitude",
                                 geography=True, blank=True, null=True)

    gis = gis_models.GeoManager()
    objects = models.Manager()

    def __unicode__(self):
        return self.name
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-26 08:30:23

为什么要精确地说明您在教程中提到的使用db.model的代码是一个谜。正如您将从DJango API文档看到的那样。PointField是django.contrib.gis.db.models.Model的成员,而不是django.db.models.Model的成员。请注意,他们是从django.db.models.Model派生的,但仍然将location字段定义为

代码语言:javascript
复制
location = gis_models.PointField(u"longitude/latitude",
                                 geography=True, blank=True, null=True)

gis_models来自于这一行:

代码语言:javascript
复制
from django.contrib.gis.db import models as gis_models

然后,他们不得不定义两位经理:

代码语言:javascript
复制
gis = gis_models.GeoManager()
objects = models.Manager()

而在正常情况下,一个就足够了。因此,简而言之,他们编写了冗长的、令人困惑的代码,只是为了避免从django.contrib.gis.db.models.Model中派生出来。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32777262

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档