2016-07-15 106 views
1

當我嘗試刪除一個User對象時,我得到一個ProgrammingError,這是User.delete發生的任何地方,它甚至發生在管理中。Django - 模型不存在,但Django仍然加載它們

的錯誤

Django的顯然是「自以爲」那有不存在任何地方auth_userapiHandlers_cardholders之間的關係,在數據庫中沒有此列,並沒有models.[y也不admin.py在名爲apiHandlers的應用程序中,但Django預計,甚至有一部分管理員網站專門用於它。這隻在我從SQLite遷移到PostGreSQL時纔開始發生。

目前,所有本地依賴項(模型,管理,表單和字段)都位於一個名爲helpers的應用程序中,我不確定這是否有效,但它將所有內容保留在一個位置並避免了複雜性。

UPDATE 0.1

壹號的可能會是很多更新

我曾經有過遷移時,涉及到Django的REST框架的一個問題,但我最終設法通過修復它快速pip install到restframework的新更新,它不再給我任何錯誤,同時進行遷移和遷移。

下面是我從Django管理中獲得的當前回溯,它在其他刪除方法中基本相同。

`

Environment: 


Request Method: GET 
Request URL: http://localhost:8000/admin/auth/user/3/delete/ 

Django Version: 1.9.2 
Python Version: 2.7.10 
Installed Applications: 
['django.contrib.admin', 
'django.contrib.auth', 
'django.contrib.contenttypes', 
'django.contrib.sessions', 
'django.contrib.messages', 
'django.contrib.staticfiles', 
'rest_framework', 
'corsheaders', 
'oauth2_provider', 
'apiHandlers', 
'frontEnd', 
'helpers', 
'nonUser'] 
Installed Middleware: 
['django.middleware.security.SecurityMiddleware', 
'django.contrib.sessions.middleware.SessionMiddleware', 
'django.middleware.common.CommonMiddleware', 
'django.middleware.csrf.CsrfViewMiddleware', 
'django.contrib.auth.middleware.AuthenticationMiddleware', 
'django.contrib.auth.middleware.SessionAuthenticationMiddleware', 
'django.contrib.messages.middleware.MessageMiddleware', 
'django.middleware.clickjacking.XFrameOptionsMiddleware', 
'corsheaders.middleware.CorsMiddleware', 
'oauth2_provider.middleware.OAuth2TokenMiddleware'] 



Traceback: 

File "/Users/Mason/Documents/dev/FlowFrameWork/flow-framework/env/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response 
    149.      response = self.process_exception_by_middleware(e, request) 

File "/Users/Mason/Documents/dev/FlowFrameWork/flow-framework/env/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response 
    147.      response = wrapped_callback(request, *callback_args, **callback_kwargs) 

File "/Users/Mason/Documents/dev/FlowFrameWork/flow-framework/env/lib/python2.7/site-packages/django/contrib/admin/options.py" in wrapper 
    541.     return self.admin_site.admin_view(view)(*args, **kwargs) 

File "/Users/Mason/Documents/dev/FlowFrameWork/flow-framework/env/lib/python2.7/site-packages/django/utils/decorators.py" in _wrapped_view 
    149.      response = view_func(request, *args, **kwargs) 

File "/Users/Mason/Documents/dev/FlowFrameWork/flow-framework/env/lib/python2.7/site-packages/django/views/decorators/cache.py" in _wrapped_view_func 
    57.   response = view_func(request, *args, **kwargs) 

File "/Users/Mason/Documents/dev/FlowFrameWork/flow-framework/env/lib/python2.7/site-packages/django/contrib/admin/sites.py" in inner 
    244.    return view(request, *args, **kwargs) 

File "/Users/Mason/Documents/dev/FlowFrameWork/flow-framework/env/lib/python2.7/site-packages/django/utils/decorators.py" in _wrapper 
    67.    return bound_func(*args, **kwargs) 

File "/Users/Mason/Documents/dev/FlowFrameWork/flow-framework/env/lib/python2.7/site-packages/django/utils/decorators.py" in _wrapped_view 
    149.      response = view_func(request, *args, **kwargs) 

File "/Users/Mason/Documents/dev/FlowFrameWork/flow-framework/env/lib/python2.7/site-packages/django/utils/decorators.py" in bound_func 
    63.     return func.__get__(self, type(self))(*args2, **kwargs2) 

File "/Users/Mason/Documents/dev/FlowFrameWork/flow-framework/env/lib/python2.7/site-packages/django/utils/decorators.py" in inner 
    184.      return func(*args, **kwargs) 

File "/Users/Mason/Documents/dev/FlowFrameWork/flow-framework/env/lib/python2.7/site-packages/django/contrib/admin/options.py" in delete_view 
    1629.    [obj], opts, request.user, self.admin_site, using) 

File "/Users/Mason/Documents/dev/FlowFrameWork/flow-framework/env/lib/python2.7/site-packages/django/contrib/admin/utils.py" in get_deleted_objects 
    128.  collector.collect(objs) 

File "/Users/Mason/Documents/dev/FlowFrameWork/flow-framework/env/lib/python2.7/site-packages/django/contrib/admin/utils.py" in collect 
    193.    return super(NestedObjects, self).collect(objs, source_attr=source_attr, **kwargs) 

File "/Users/Mason/Documents/dev/FlowFrameWork/flow-framework/env/lib/python2.7/site-packages/django/db/models/deletion.py" in collect 
    230.      elif sub_objs: 

File "/Users/Mason/Documents/dev/FlowFrameWork/flow-framework/env/lib/python2.7/site-packages/django/db/models/query.py" in __nonzero__ 
    266.   return type(self).__bool__(self) 

File "/Users/Mason/Documents/dev/FlowFrameWork/flow-framework/env/lib/python2.7/site-packages/django/db/models/query.py" in __bool__ 
    262.   self._fetch_all() 

File "/Users/Mason/Documents/dev/FlowFrameWork/flow-framework/env/lib/python2.7/site-packages/django/db/models/query.py" in _fetch_all 
    1074.    self._result_cache = list(self.iterator()) 

File "/Users/Mason/Documents/dev/FlowFrameWork/flow-framework/env/lib/python2.7/site-packages/django/db/models/query.py" in __iter__ 
    52.   results = compiler.execute_sql() 

File "/Users/Mason/Documents/dev/FlowFrameWork/flow-framework/env/lib/python2.7/site-packages/django/db/models/sql/compiler.py" in execute_sql 
    848.    cursor.execute(sql, params) 

File "/Users/Mason/Documents/dev/FlowFrameWork/flow-framework/env/lib/python2.7/site-packages/django/db/backends/utils.py" in execute 
    79.    return super(CursorDebugWrapper, self).execute(sql, params) 

File "/Users/Mason/Documents/dev/FlowFrameWork/flow-framework/env/lib/python2.7/site-packages/django/db/backends/utils.py" in execute 
    64.     return self.cursor.execute(sql, params) 

File "/Users/Mason/Documents/dev/FlowFrameWork/flow-framework/env/lib/python2.7/site-packages/django/db/utils.py" in __exit__ 
    95.     six.reraise(dj_exc_type, dj_exc_value, traceback) 

File "/Users/Mason/Documents/dev/FlowFrameWork/flow-framework/env/lib/python2.7/site-packages/django/db/backends/utils.py" in execute 
    64.     return self.cursor.execute(sql, params) 

Exception Type: ProgrammingError at /admin/auth/user/3/delete/ 
Exception Value: relation "apiHandlers_cardholder" does not exist 
LINE 1: ...user"."is_active", "auth_user"."date_joined" FROM "apiHandle... 
                 ^

`

UPDATE 0.2

  • 我使用./manage.py runserver(Mac)來運行它,到目前爲止,我還沒有設法來測試它Nginx和WSGI在我的服務器上。

  • 我沒有收到警告,說它可能會影響另一個模型,例如,管理員,我剛剛得到這個錯誤。

+0

你能產生一個完整的錯誤堆棧,因爲'ProgrammingError'過於模糊爲我們解讀? 另外,做'python manage.py migrate'時你有任何錯誤嗎? 您的應用程序中的代碼可能也可能需要,但還不確定哪些文件。 – raphv

+0

@raphv是的,只是爲你做了,我不確定哪個代碼是需要的,所以只有時間才能說明。 –

+0

刪除之前您是否收到過消息,說明更改會級聯到其他模型?你有沒有辦法知道完整的SQL請求是什麼(可能用django-debug-toolbar)?此外,您是否處於生產型環境(例如,apache/nginx + wsgi)還是使用runserver?如果您處於第一種情況,那麼您的應用程序將由wsgi模塊保存在內存中,並且可能會引用過時的模型,直到您重新啓動服務器。 – raphv

回答

0

這很可能是因爲你有一個零散的models.pyc文件。清除所有* .pyc文件。你可以嘗試這樣的事情,如果你是在Linux上:

find . -name '*pyc' -exec 'rm' '{}' ';' 

按照由./manage.py makemigrations apihandlers然後./manage.py migrate

+0

你的意思是每個.pyc文件,而不僅僅是models.pyc –

+0

清除每個pyc文件,而你在它。你可以使用查找,如果你在Linux上 – e4c5

+0

謝謝你是一個救生員 –