Я добавляю поле location в мою модель django, оно показывает ошибку

#python #django #python-3.x #postgresql #postgis

#python #django #python-3.x #postgresql #postgis

Вопрос:

Я пытаюсь добавить поле location в свою модель django с помощью расширения postgis, когда я пытаюсь перенести его, отображается ошибка:

django.db.utils.OperationalError: не удалось открыть файл управления расширением «/ usr / share / postgresql / 10 / extension / postgis.control»: такого файла или каталога нет

Я обновил свой settings.py

 INSTALLED_APPS = [
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'meenfee',
    'accounts',
    'rest_framework',
    'rest_auth',
    'rest_auth.registration',
    'django.contrib.sites',
    'allauth',
    'django.contrib.gis',
    'allauth.account',
    'allauth.socialaccount',
    'allauth.socialaccount.providers.facebook',
    'allauth.socialaccount.providers.google',
    'django.contrib.admin',
]


 DATABASES = {
    'default': {
        'ENGINE': 'django.contrib.gis.db.backends.postgis',
        'NAME': 'meenfeefinal',
        'USER': 'meenfeefinaluser',
        'PASSWORD': 'password',
        'HOST': 'localhost',
        'PORT': '',
    }
}
  

вот мой models.py. Взгляните на поле location

 from django.contrib.gis.db import models as gis_models




class Service(models.Model):



    user                    = models.ForeignKey(User, on_delete=models.CASCADE)
    service_name            = models.CharField(max_length=200,null=True,default="sample service")
    category                = models.ForeignKey(Category, on_delete=models.CASCADE)  
    subcategory             = models.ForeignKey(SubCategory,on_delete=models.CASCADE)
    experience              = models.TextField(blank=True,null=True)
    levelskill              = models.CharField(max_length=120, choices=LEVELSKILLS)
    service_place           = models.CharField(max_length=120, choices=LOCATION)
    location                = gis_models.PointField(u'longitude/latitude',geography=True, blank=True, null=True)
    city                    = models.ForeignKey(City,blank=True,null=True,on_delete=models.DO_NOTHING)
    distance_limit          = models.CharField(max_length=100, choices=DISTANCE)
    service_pricing         = models.PositiveIntegerField(help_text='in Jordanian dinar')
    pricing_timing_unit     = models.CharField(max_length=30,choices=PRICINGUNIT)
    quote_at_request        = models.BooleanField(default=False, help_text='This will create popup when they accept a requester request')
    provide_tools           = models.BooleanField(default=True)
    tool_specify            = models.TextField(blank =True, null=True)
    instant_booking         = models.BooleanField(default =True)
    avg_rating              = models.FloatField(default=0.0)
    created                 = models.DateTimeField(auto_now_add=True)

    def __int__(self):
        return self.id

    class Meta:
        verbose_name_plural = "Services"
  

Я просто хочу успешно добавить поле location в свою модель Service Заранее благодарю вас

Ответ №1:

в вашей postgres DB отсутствует плагин postgis

Пожалуйста, установите расширения postgis, используя приведенную ниже команду

sudo apt-get install postgis postgresql-9.3-postgis-scripts

пожалуйста, используйте версию postgis, такую же, как ваша postgres db

Комментарии:

1. для всех, кто использует docker — RUN apt-get install -y postgis postgresql-9.3-postgis-scripts — не забывайте -y

2. Спасибо, это помогло решить мою проблему! Мне нужно было только установить postgis , хотя

Ответ №2:

sudo apt-get install postgis postgresql-11-postgis-scripts дало мне:

 The following packages have unmet dependencies:
 postgis : Depends: libgdal20 (>= 2.0.1) but it is not installable
           Depends: libproj12 (>= 4.9.0) but it is not installable
           Recommends: postgresql-postgis
           Recommends: postgis-doc but it is not going to be installed
  

Затем я успешно попробовал:
sudo apt-get install postgresql-11-postgis-2.5-scripts