【发布时间】:2021-03-17 07:09:58
【问题描述】:
我正在构建一个 Web 应用程序,但遇到了一个错误。
我要做什么
我正在使用Gdal、OSGeo、Postgresql、Postgis 制作一个GeoDjango 应用程序。全部安装成功。
教程 :- I am following this Tutorial
当我尝试在Django Admin 中打开Shop 面板时,它会一直显示给我
关系“mains_shop”不存在 第 1 行:从“mains_shop”中选择 COUNT(*) 作为“__count”
当我删除它并再次迁移时
然后显示
ValueError:字符串输入无法识别为 WKT EWKT 和 HEXEWKB。
但删除迁移正在解决ValueError。
models.py
class Shop(models.Model):
name = models.CharField(max_length=100)
location = models.PointField()
address = models.CharField(max_length=100)
city = models.CharField(max_length=50)
admin.py
@admin.register(Shop)
class ShopAdmin(OSMGeoAdmin):
list_display = ('name', 'location')
settings.py
INSTALLED_APPS = [
'django.contrib.gis',
]
DATABASES = {
'default': {
'ENGINE': 'django.contrib.gis.db.backends.postgis',
'NAME': '-------',
'USER': '-------',
'PASSWORD': '-------',
'HOST': 'localhost',
'PORT': '',
}
}
我尝试了什么
-
第一次出现错误时我认为
GDal不会安装然后我重新安装它并成功安装。 -
我已经重新安装了
PostGis。 -
我也看到了很多答案,但对我没有任何帮助。
-
我已经多次申请
migrations。 -
我也试过
python manage.py migrate --fake。
我不知道我做错了什么。
任何帮助将不胜感激。
提前致谢。
【问题讨论】:
-
您说您使用了
python manage.py migrate --fake,这可能是您遇到麻烦的原因。该命令的作用是将所有迁移标记为已在您的数据库中应用而不进行任何更改。您通常应该使用python manage.py makemigrations,然后使用python manage.py migrate。您使用的命令仅在您手动对数据库进行更改时使用。 -
当我执行
makemigrations和migrate时,它仍然显示该错误。当我删除所有迁移和migrate again时,仍然显示错误。 -
问题是所有迁移都已标记为已应用。我实际上不知道实际应用了多少迁移,所以我无法正确建议,但如果没有实际应用迁移,您可以尝试运行
python manage.py migrate --fake <appname> zero将它们标记为未应用,然后再次尝试迁移。否则我能给出的唯一建议是删除数据库并再次迁移。 -
当我取消应用
migrations和migrate again时会出现一个新错误django.db.utils.ProgrammingError: 关系“project_comment”已经存在 -
您需要找出您实际应用了哪些迁移,然后运行
python manage.py migrate --fake <appname> <migration_really_applied>,之后您需要迁移。如果您无法弄清楚,那么就像我上面所说的,删除数据库并再次迁移。
标签: python django geolocation gis