django .db.utils.ProgrammingError: тип "растр" не существует - PullRequest
2 голосов
/ 29 января 2020

мои модели: я создал 3 модели здесь, и когда я мигрирую, я получаю ошибку.

from django.contrib.gis.db import models

from django.contrib.gis.db.models.fields import RasterField

class WorldBorder(models.Model):
    # Regular Django fields corresponding to the attributes in the
    # world borders shapefile.
    name = models.CharField(max_length=50)
    area = models.IntegerField()
    pop2005 = models.IntegerField('Population 2005')
    fips = models.CharField('FIPS Code', max_length=2)
    iso2 = models.CharField('2 Digit ISO', max_length=2)
    iso3 = models.CharField('3 Digit ISO', max_length=3)
    un = models.IntegerField('United Nations Code')
    region = models.IntegerField('Region Code')
    subregion = models.IntegerField('Sub-Region Code')
    lon = models.FloatField()
    lat = models.FloatField()

    # GeoDjango-specific: a geometry field (MultiPolygonField)
    mpoly = models.MultiPolygonField()

    # Returns the string representation of the model.
    def __str__(self):
        return self.name

class Zipcode(models.Model):
    code = models.CharField(max_length=5) 
    poly= models.PolygonField()

class Elevation(models.Model):
    name = models.CharField(max_length=100,blank=True, null=True)
    rast = RasterField(srid=2346)  

мои настройки .. База данных, которую я использовал, Postgres, так что я могу использовать postgis для гео django

DATABASES = {
"default": {
    "ENGINE": "django.contrib.gis.db.backends.postgis",
    "NAME": "django_course",
    "USER": "postgres",
    "PASSWORD": "**************",
    "HOST": "localhost",
    "PORT": "5432",
}
}

Ответы [ 2 ]

3 голосов
/ 29 января 2020

Вам не хватает расширения PostGIS Raster. Создайте расширение и повторите попытку:

CREATE EXTENSION postgis_raster;

Цитата из documentation:

Обратите внимание, что основным изменением в 3.0 является то, что функциональность растра был выделен как отдельное расширение .

1 голос
/ 29 января 2020

Используйте это в настройках вашей базы данных

DATABASES = {
'default': {
    'ENGINE': 'django.db.backends.postgresql_psycopg2',
    'NAME': 'database_name',
    'HOST': 'localhost',
    'USER': 'user_name',
    'PASSWORD': 'password',
    'PORT': '5432',
    }
} 
...