Я не могу запустить 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()
Что-то вызвало то, чтобы сломать, я не понимаю, почему. Может ли кто-нибудь объяснить это, пожалуйста?