модель django не создает таблицу postgresql - PullRequest
0 голосов
/ 05 октября 2018

Я добавил простую модель в свое приложение для репортеров в моем проекте django

class Municipalities(models.Model):
    namelsad = models.CharField(max_length=100)
    geom = gismodels.MultiPolygonField(srid=4326)

, когда я python3 manage.py makemigrations reporter

говорит: no changes detected in reporter

тогда, когдаЯ python3 manage.py migrate reporter

Operations to perform:
  Apply all migrations: reporter
Running migrations:
  No migrations to apply.

, но нет базы данных postgresql reporter_municipalities

reporter включен в установленные приложения

Модель муниципалитетов находится в файле model.py врепортер приложение

Я должен добавить, что у меня была таблица округов, я вручную удалил ее в postgresql и попытался добавить модель муниципалитетов для создания таблицы

муниципалитетов также находится в django_content_type

enter image description here

но нет таблицы муниципалитетов

обновление

Изменено Class Municipalities на Class Muni

python3 manage.py makemigrations reporter

тогда он спросил меня

Did you rename the reporter.Municipalities model to Muni? [y/N] 

, если я нажму y

, затем запустите миграцию

, дающую мне

django.db.utils.ProgrammingError: table "reporter_municipalities" does not exist

но я так растерялся, что таблицы нет и никогда не существовало !!

Теперь я вообще не могу перейти на БДпричина "reporter_municipalities"

1 Ответ

0 голосов
/ 05 октября 2018

Когда Django ищет миграции, он ищет приложение reporter, как оно настроено в вашем INSTALLED_APPS.Он использует AppConfig или имя приложения для получения полного имени пакета, то есть my_project.reporter.Этот пакет должен быть доступен в вашем PYTHONPATH.Он должен быть доступен только в вашем проекте разработки, но может случиться так, что он «установлен» в вашем virtualenv.Это может произойти при выполнении pip install . (без -e) или (с некоторыми конфигурациями) при выполнении тестов (я видел, что это происходит с токсиком).

В этом сценарии у вас есть два my_project.reporter, доступных для Python, но вы редактируете / обновляете "второй".Когда вы запускаете ./manage.py makemigrations, python сначала находит код, который вы не изменили (установленный в вашем virtualenv), поэтому он не находит обновления.

Чтобы проверить, есть ли у вас это дублирование, вы можете:

  1. удалите проект (pip uninstall <django-project>), чтобы увидеть, ссылается ли он на «символическую ссылку»

    Если это так, вы увидите что-то вроде Uninstalling <PROJECT>: Would remove: /data/PROGETTI/UNICEF/odk/.venv/lib/python3.6/site-packages/<PROJECT>.egg-link Proceed (y/n)? y

    Обратите внимание на egg-link в конце строки.

ИЛИ

  1. , откройте оболочку и введите import <full_path_of_reporter> AS pkg; print(pkg.__file__) ипроверьте путь к файлу
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...