2017-02-20 3 views
1

를 실행 한 후 나는 makemigrations를 실행할 수 없습니다 오전 (장고-확장에서 flush, reset_db) migrate, 또는 다른 것을 내 INSTALLED_APPS의 특정 응용 프로그램이있는 경우 . 내가 추가하는 시도까지,장고 - makemigrations를 실행할 수 없습니다 : "그런 테이블"심지어 reset_db

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

그리고 전 (makemigrations 및 마이그레이션 잘 실행하고 내가 제대로 응용 프로그램/모델을 사용할 수 있습니다) 작업을했다 :

이 앱은 issues에게 전화를 하나 개의 모델을 가지고 있습니다

severity = models.IntegerField() 

및 실행을 시도했습니다. 나는 오류가 없거나 더 이상 기억하지 않지만 그 이후로는 모델에서 severity을 제거한 후에도 모든 것이 손상됩니다.

내 settings.py에서 issues 응용 프로그램을 제거하면 모든 것이 작동합니다.

오류 내가 얻을 :

[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 실행할 때 저도 같은 오류가 발생합니다.

INSTALLED_APPS에서 제거 된 문제로 플러시 및 reset_db를 실행 해 보았지만 문제가 해결되지 않았습니다.

위 작업을 수행하고 makemigrations를 실행하여 마이그레이션을 시도했지만이 방법도 작동하지 않습니다. INSTALLED_APPS (으)로 문제를 되돌려 주면 모든 것이 손상됩니다.

어떻게 해결할 수 있습니까?

편집 :

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 

내가 보내지 않은 문제를 확인하고 Gitlab에 그들을 게시 apps.py 사용 :

어쩌면 관련, 문제의 모델은 기능을 가진 관리자가 있습니다.

편집 2 :

문제 라인을 주석에 의해 해결은 아래 ready()에, 내 apps.py에 나타납니다

어떻게 든 휴식 일을 발생
issues.models.Issue.objects.check_and_send_unsent_issues() 

, 나는 이유를 이해하지 않습니다. 누군가 제발 그걸 설명 할 수 있을까요?

답변

2

모델을 너무 일찍로드하는 것을 방지하려면 import issues.modelsdef ready()으로 이동해보십시오.

관련 문제