2017-02-20 2 views
1

Я не могу запустить makemigrations, migrate, или что-нибудь еще (flush, reset_db от Джанго-расширений), если у меня есть определенное приложение в моем INSTALLED_APPS ,Джанго - не может работать makemigrations: «нет такой таблицы» даже после того, как работает reset_db

приложение называется issues и имеет одну модель:

class Issue(models.Model): 
    title = models.CharField(max_length=255) 
    description = models.CharField(max_length=1000) 
    sent = models.BooleanField() 

И это работает, прежде чем (makemigrations и мигрировать побежал отлично и я мог правильно использовать приложение/модель), пока я не попробовал, добавив:

severity = models.IntegerField() 

и попытался запустить makemigrations. У меня нет ошибки или больше ее помнят, но с тех пор все сломано, даже после удаления severity из модели.

Все работает, если я удалю приложение issues из своих настроек.py.

Я получаю ошибку:

[email protected]:~/workspace/budget/src$ python3.5 manage.py makemigrationsTraceback (most recent call last): 
    File "/usr/local/lib/python3.5/dist-packages/django/db/backends/utils.py", line 64, in execute 
    return self.cursor.execute(sql, params) 
    File "/usr/local/lib/python3.5/dist-packages/django/db/backends/sqlite3/base.py", line 337, in execute 
    return Database.Cursor.execute(self, query, params) 
sqlite3.OperationalError: no such table: issues_issue 

The above exception was the direct cause of the following exception: 

Traceback (most recent call last): 
    File "manage.py", line 22, in <module> 
    execute_from_command_line(sys.argv) 
    File "/usr/local/lib/python3.5/dist-packages/django/core/management/__init__.py", line 367, in execute_from_command_line 
    utility.execute() 
    File "/usr/local/lib/python3.5/dist-packages/django/core/management/__init__.py", line 341, in execute 
    django.setup() 
    File "/usr/local/lib/python3.5/dist-packages/django/__init__.py", line 27, in setup 
    apps.populate(settings.INSTALLED_APPS) 
    File "/usr/local/lib/python3.5/dist-packages/django/apps/registry.py", line 115, in populate 
    app_config.ready() 
    File "/home/madjura/workspace/budget/src/issues/apps.py", line 16, in ready 
    issues.models.Issue.objects.check_and_send_unsent_issues() 
    File "/home/madjura/workspace/budget/src/issues/models.py", line 18, in check_and_send_unsent_issues 
    for issue in issues: 
    File "/usr/local/lib/python3.5/dist-packages/django/db/models/query.py", line 256, in __iter__ 
    self._fetch_all() 
    File "/usr/local/lib/python3.5/dist-packages/django/db/models/query.py", line 1087, in _fetch_all 
    self._result_cache = list(self.iterator()) 
    File "/usr/local/lib/python3.5/dist-packages/django/db/models/query.py", line 54, in __iter__ 
    results = compiler.execute_sql() 
    File "/usr/local/lib/python3.5/dist-packages/django/db/models/sql/compiler.py", line 835, in execute_sql 
    cursor.execute(sql, params) 
    File "/usr/local/lib/python3.5/dist-packages/django/db/backends/utils.py", line 79, in execute 
    return super(CursorDebugWrapper, self).execute(sql, params) 
    File "/usr/local/lib/python3.5/dist-packages/django/db/backends/utils.py", line 64, in execute 
    return self.cursor.execute(sql, params) 
    File "/usr/local/lib/python3.5/dist-packages/django/db/utils.py", line 94, in __exit__ 
    six.reraise(dj_exc_type, dj_exc_value, traceback) 
    File "/usr/local/lib/python3.5/dist-packages/django/utils/six.py", line 685, in reraise 
    raise value.with_traceback(tb) 
    File "/usr/local/lib/python3.5/dist-packages/django/db/backends/utils.py", line 64, in execute 
    return self.cursor.execute(sql, params) 
    File "/usr/local/lib/python3.5/dist-packages/django/db/backends/sqlite3/base.py", line 337, in execute 
    return Database.Cursor.execute(self, query, params) 
django.db.utils.OperationalError: no such table: issues_issue 

Хотя вопросы в INSTALLED_APPS я получаю ту же ошибку при запуске мигрирует, флеш и reset_db.

Я попытался выполнить флеш и reset_db с проблемами, удаленными из INSTALLED_APPS, это не решило проблему.

Я пробовал сделать выше, а затем запустить makemigrations и мигрировать, это также не работает. Как только я вставил вопросы обратно в INSTALLED_APPS, все сломалось.

Как это исправить?

EDIT:

Может быть применимо, модель проблема имеет менеджер с функцией:

class IssueManager(models.Manager): 
    """Manager for the Issue class.""" 

    def check_and_send_unsent_issues(self): 
     """ 
     Checks for unsent Issue objects (Issue.sent = False) and attempts 
     to send them. 
     Issues that have been sent are deleted. 
     If the issue fails to be sent for whatever reason, it is not deleted. 
     Does nothing if there are no unsent issues. 
     This method is called once when the server starts. 
     """ 

     issues = self.get_queryset().filter(sent=False) 
     for issue in issues: 
      try: 
       make_issue(issue.title, issue.description) 
       issue.delete() 
      except PostIssueException: 
       pass 

Использование apps.py я проверить неотправленные вопросов и разместить их на Gitlab.

EDIT 2:

Устранена комментируя строку, ниже которой появляется в моей apps.py в ready():

issues.models.Issue.objects.check_and_send_unsent_issues() 

Что-то вызвало то, чтобы сломать, я не понимаю, почему. Может ли кто-нибудь объяснить это, пожалуйста?

ответ

2

Попробуйте переместить линию import issues.models в def ready(), чтобы предотвратить загрузку моделей слишком рано.

Смежные вопросы