Django не создает таблицы db для моделей (ни с syncdb, ни с South)

У меня есть проект Django на CentOS VPS.

Я создал некоторые модели и отлаживал их, чтобы они проверяли и не выдавали ошибок. У меня есть они в папке «models» в моем myapp и добавили каждую модель в файл инициализации в этом каталоге, например:

из категории импорт Категория

Я добавил приложение в settings.py INSTALLED_APPS и запустил:

 Python manage.py syncdb 

Он, казалось, работал отлично и добавил все таблицы отдельно от тех, которые были для моего приложения.

Затем я установил Юг и добавил это к INSTALLED_APPS и снова попробовал syncdb и запустил:

 Python manage.py schemamigration myapp --initial 

Он сгенерировал файл правильно, но в нем ничего не было (ни одна из таблиц моих моделей).

Пример файла в папке «models» (usertype.py)

 from django.db import models class UserType(models.Model): usertype_id = models.PositiveIntegerField(primary_key=True) description = models.CharField(max_length=100) is_admin = models.BooleanField() is_moderator = models.BooleanField() class Meta: app_label = 'myapp' 

Любые идеи, что здесь может быть неправильным, и почему я не могу ничего обнаружить для своих моделей?

    2 Solutions collect form web for “Django не создает таблицы db для моделей (ни с syncdb, ни с South)”

    вы недопонимаете процесс работы с югом. Юг – это не просто другое приложение, это управляющий инструмент. Ваше приложение должно быть южным заявлением с самого начала или преобразованным в одно. При этом процесс выглядит так:

    1. Добавить юг в INSTALLED_APPS
    2. запустить syncdb в первый раз
    3. Добавьте свое приложение в INSTALLED_APPS *
    4. выполните команду инициализации юга:

       python manage.py schemamigration myapp --initial 
    5. мигрировать:

       python manage.py migrate 

    Если вы хотите преобразовать проект:

    1. Запустить syncdb после добавления юга
    2. бег:

      manage.py convert_to_south myapp

    И теперь используйте юг, чтобы управлять своими миграциями.

    * ps – вы можете одновременно добавить как юг, так и свое приложение, если вы хотите, чтобы вы разместили юг перед своими приложениями. Это потому, что django читает INSTALLED_APPS по порядку – он запускает syncdb для всех приложений, но после установки на юг он не будет устанавливать остальных и вместо этого скажет вам использовать южные команды для обработки этих

    редактировать

    Я ввел тебя в заблуждение. Поскольку вы уделяете столько внимания югу, что я не понимал, что проблема заключалась в том, что вы пытались использовать модели в качестве модуля каталогов вместо обычного файла. Это признанная проблема в django , и обходной путь на самом деле точно так же, как вы, в первую очередь:

    скажите, что это ваша структура:

     project/ myapp/ models/ __init__.py bar.py 

    вам нужно bar.py чтобы выглядеть так:

     from django.db import models class Foo(models.Model): # fields... class Meta: app_label = 'myapp' #you need this! 

    и __init__.py должно выглядеть так:

     from bar import Foo 

    Убедитесь, что он выглядит так, и он будет работать.

    ОБНОВЛЕНИЕ 18/08/2014

    Билет изменился на wontfix , потому что, по-видимому, исправлена большая проблема с app_label. Возгласы ликования!

    Выполните следующие команды:

     python manage.py makemigrations yourappname python manage.py migrate 

    Обратите внимание, что он работает на версии django 1.7 для меня.

      Python - лучший язык программирования в мире.