django - GeoDjango 项目缺少数据库模式中的字段

标签 django postgresql django-models postgis geodjango

我已经使用 PostGIS 后端创建了一个 Django 项目,据我所知,这一切似乎都很好。我现在在这个项目中创建了一个应用程序,如下所示:

from django.contrib.gis.db import models

class MyPlace(models.Model):
    name = models.CharField(max_length=255)
    location = models.PointField()

    objects = models.GeoManager()

这应该是一个名称/点对的简单模型(稍后构建),但数据库没有创建位置字段。没有错误,并且该字段被忽略,直到我尝试访问模型(使用 Admin),在那里它发出“DatabaseError:column myproj_myplace.location does not exist”

我真的不确定这里出了什么问题,因为解析没有错误(syncdb 无一异常(exception)地工作)。当我为模型运行 sql 命令时,这是我得到的:

BEGIN;
CREATE TABLE "myproj_myplace" (
    "id" serial NOT NULL PRIMARY KEY,
    "name" varchar(255) NOT NULL
)
;
COMMIT;

还是没有字段!有什么想法吗?

我的 INSTALLED_APPS 中有“django.contrib.gis”和我的应用程序,并且已经构建了支持 PostGIS 的数据库模式(添加 sql 函数文件方法,而不是模板方法)

提前为任何帮助欢呼

这是从空模式完成的,表是从头开始创建的

最佳答案

尝试“python manage.py sqlall {app}”,由于某种原因,sql 输出不包含空间列,但 sqlall 包含。然后尝试使用 pgadmin3 直接在数据库上运行输出,您可能会更清楚地知道出了什么问题。

关于django - GeoDjango 项目缺少数据库模式中的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5596768/

相关文章:

postgresql - AWS 云信息 : Enable PostGIS Extension in RDS from Cloudformation

regex - Postgres 正则表达式贪婪控制

django:manytomanyfield with through 如何出现在管理员中?

mysql - 是否可以使用 django 模型将数组存储在 mysql 数据库中?

django - 使用 Django Rest 框架进行注册电子邮件验证

postgresql - 生成系列 Postgres

python - 如何将一个字段从一个模型移动到另一个模型,同时仍然保留数据?

python - django.db.utils.OperationalError : near "񐁂򐁇N": syntax error

python - Django F() 对象和自定义保存怪异

django - 模型选择字段。 ID而不是名称